线性模型是在机器学习中最先接触到的数学模型,通过对多组数值对进行拟合,从而最终得出自变量与因变量之间的线性关系。本片之中并不对线性模型进行阐述而是主要通过python的类库scikit-learn进行线性回归的相关尝试。
1.数据源导入
我们在使用scikit-learn的时候可以选择类库内部自带的数据集,也可以使用pandas读取csv格式的数据,同样也可以自行定义dataframe格式变量数据。数据文件中是以t、x、y三个变量作为列头。
import pandas as pd
df=pd.read_csv('data.csv')
data_X = df[['x']]
data_y = df[['y']]
而选择 类库内部自带的数据集,可以使用这种方法进行调用。我们可以通过print查看数据的结构以及内容。
from sklearn import datasets
from numpy import shape
loaded_data = datasets.load_boston()
print(shape(data_X))
print(shape(data_y))
print(data_X)
print(data_y)
2.设置训练集与测试集
from sklearn import model_selection
X_train, X_test, y_train, y_test = model_selection.train_test_split(data_X, data_y, test_size=0.2)
print(shape(X_train))
print(shape(X_test))
3.选择线性模型、进行训练
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X_train, y_train)
print (model.coef_)
print (model.intercept_)
y_pred = model.predict(X_test)
4.输出测试与交叉检验MSE
from sklearn import metrics
print (metrics.mean_squared_error(y_test, y_pred))
from sklearn.model_selection import cross_val_predict
predicted = cross_val_predict(model, data_X, data_y, cv=10)
print(metrics.mean_squared_error(data_y, predicted))
5.作图观察
import matplotlib.pyplot as plt
plt.scatter(data_y, predicted, color='y', marker='o')
plt.scatter(data_y, data_y,color='g', marker='+')
plt.show()
当下这个例子只是简单的对数据进行拟合,展示拟合效果与结果,更多的精确分析还需在之后的文章中进行展开。