基本流程
- 加载数据
- 切分数据集
- 训练
- 预测
- 评估
值得注意的是,在对数据预处理的时候,没有归一化这一步骤,这是因为这个算法在实现过程中有没有归一化对结果没有影响
导包
将需要用到的库都导进来
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import StandardScaler
加载数据
所用数据是sklearn自带数据库中波士顿房价的数据
boston = datasets.load_boston()
X = boston.data
y = boston.target
因为数据可能会有一些问题,所以对数据进行预处理:
X = X[y < 50.0]
y = y[y < 50.0]
切分数据
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state=66)
训练
lin = LinearRegression()
lin.fit(X_train, y_train)
对于线性模型,是有系数的,X矩阵中每个x都有一个系数,将其存储在实例中的coef_属性中;
每个模型函数还存在一个截距,存储在实例的intercept_属性中
lin.coef_
lin.intercept_
评估
因为只是想看结果的准确程度,并不想得到预测结果,所以可以直接调用对象实例的score()方法查看评估结果
lin.score(X_test, y_test)
而且经过测试可知,无论是否归一化数据,最后得到的结果是不变的
-
数学原理:
score方法得到的值就是R^2的值
最后得到R平方值的范围一般是0到1之间,值越大表示算法的效果越好
网友评论