【发布时间】:2020-06-20 16:41:11
【问题描述】:
我正在做一个课程作业,问题是:
编写一个函数,在训练数据 X_train 上拟合 0 到 9 度的多项式线性回归模型。对于每个模型,计算训练数据和测试数据的 R2R2(确定系数)回归分数,然后返回这两个数组都在一个元组中。
这个函数应该返回一个 numpy 数组的元组 (r2_train, r2_test)。两个数组的形状都应该是 (10,)
我的代码:` 从 sklearn.linear_model 导入线性回归
from sklearn.preprocessing import PolynomialFeatures
from sklearn.metrics.regression import r2_score
np.random.seed(0)
n = 15
x = np.linspace(0,10,n) + np.random.randn(n)/5
y = np.sin(x)+x/6 + np.random.randn(n)/10
X_train, X_test, y_train, y_test = train_test_split(x, y, random_state=0)
def answer_two():
def answer_two():
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.metrics.regression import r2_score
# Your code here
def r2_traintest(deg):
poly=PolynomialFeatures(deg)
model=LinearRegression()
X_f=poly.fit_transform(X_train.reshape(-1,1))
a=model.fit(X_f,y_train)
dee=a.predict(poly.fit_transform(X_train.reshape(-1,1)))
deez=r2_score(dee,y_train)
gin=a.predict(poly.transform(X_test.reshape(-1,1)))
mint=r2_score(gin,y_test)
return deez,mint
lst=[]
lsts=[]
for x in range(0,10,1):
lst.append(r2_traintest(x)[0])
lsts.append(r2_traintest(x)[1])
return (np.array(lst),np.array(lsts))
不幸的是,这给了我一个错误的答案,我是否遗漏了什么,请帮忙。
【问题讨论】:
-
你能提供一个输入和预期输出的例子吗?对我来说,代码看起来不错,但我会用一个函数而不是 2 来编写它,因为拟合两次模型是没有意义的(此外,您正在测试数据集中进行 fit_transform (应该只是使用模型进行转换)适合 r2_trainscore)
-
是的,我已经编辑了问题,请立即查看。我也是编码新手,所以请原谅我,我更擅长编写体面的代码。
标签: python machine-learning scikit-learn regression supervised-learning