关于sklearn线性模型的输入,我有几个问题。
ages_train = [[20, 10000], [22, 12000], [22, 14000], [25, 17000], [30, 29000]]
net_worths_train = [10000, 12000, 14000, 17000, 29000]
reg = linear_model.LinearRegression()
reg.fit(ages_train, net_worths_train)
上面的方法很有效,但很难画出来。例如,这样做行不通:
plt.scatter(ages_train, net_worths_train, color = "b", label = "train data")
所以我要做的是输入这个:
ages_train = np.array([20, 22, 25, 27, 30, 31, 31, 34, 42, 50])
net_worths_train = np.array([10000, 12000, 16000, 20000, 30000, 33000, 34000, 38000, 49000, 60000])
但是这种数据格式不适用于linear_model.LinearRegression的.fit()函数。什么是正确的方式来输入数据,并使其易于绘制?使用numpy数组更好吗?
查看documentation for scikits.learn。您将看到X和Y需要分别是二维形状数组(n_samples,n_features)和(n_samples,n_targets)。即使只有一个特性和一个目标,情况也是如此。
你知道形状数组(6,1)和形状数组(6,1)之间的区别吗?一开始有点混乱,但第一个是真正的二维数组,正好有一列,第二个是完全一维数组。
下面介绍如何将数据转换为二维数组。是的,在处理这样的数字数据时,应该使用numpy,而不是list。
顺便说一下,如果你真的只想做简单的线性回归,考虑np.polyfit(多项式拟合)或np.linalg.lstsq(广义最小二乘)。这些更易于安装和使用。不过,scikitlearn有更多的特性和高级回归技术。
相关问题 更多 >
编程相关推荐