我需要python中的指数/非线性模型

Posted

技术标签:

【中文标题】我需要python中的指数/非线性模型【英文标题】:I need an Exponential/non-linear model in python 【发布时间】:2020-10-02 23:04:40 【问题描述】:
import numpy as np
import sklearn
from sklearn import linear_model
from sklearn.utils import shuffle

data = pd.read_csv('student-mat.csv', sep=';')

predict = 'Markup'

x = np.array(data.drop([predict], 1))
y = np.array(data[predict])

x_train, x_test, y_train, y_test = sklearn.model_selection.train_test_split(x, y, test_size=0.1)

linear = linear_model.LinearRegression()

linear.fit(x_train, y_train)
acc = linear.score(x_test, y_test)
print(acc)

print(linear.coef_)
print(linear.intercept_)

目前它的设置方式可以生成线性模型,但对于我的数据我需要一个指数模型,问题是我不完全理解代码的linear = linear_model.LinearRegression() 部分。它使用我调查过但找不到指数等价物的sklearn。如果有人可以用指数等价物替换那条线,那将是惊人的。

【问题讨论】:

如果这是您要找的东西,请不要支持:***.com/questions/21720523/… 你可以使用 linear_model 中的 Ridge 来代替 【参考方案1】:

您可以将Support Vector Regression 与 RBF 内核一起使用。

from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler

nonlin_rg = sklearn.SVR(kernel='rbf', C=0.5, epsilon=0.2)

model = make_pipeline(StandardScaler(), nonlin_rg)
model.fit(x_train, y_train)

acc = model.score(x_test, y_test)

【讨论】:

所以我尝试了每一个内核,它们都给了我非常低的准确度分数,线性模型给了我 99% 的分数,但它只在我的 x 大约为 100 后才有效,所以我不确定它为什么会有这样的分数高比率。该图绝对不是线性的。 您可能需要对数据进行预处理。当数据在 ~[-1:1] 范围内时,SVM 工作得更好。查看更新的代码。 突然想到我可能理解你的问题是错误的。可能是this 是你要找的吗?

以上是关于我需要python中的指数/非线性模型的主要内容,如果未能解决你的问题,请参考以下文章

机器学习算法总结——广义线性模型(线性回归,逻辑回归)

指数分布族与广义线性模型

09.非线性-指数增长模型

Python使用sklearn和statsmodels构建多元线性回归模型(Multiple Linear Regression)并解读

广义线性模型 - Andrew Ng机器学习公开课笔记1.6

广义线性模型sas结果图怎么看