参考文档
http://sklearn.apachecn.org/cn/0.19.0/modules/linear_model.html
线性回归模型
例一:根据所给的五条数据训练并预测房子价格
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import StandardScaler
def price_predict():
# http://sklearn.apachecn.org/cn/0.19.0/modules/linear_model.html
X = np.array([[500,3,0.3],[1000,1,0.6],[750,2,0.3],[600,5,0.2],[1200,1,0.6]])
Y = np.array([10000,9000,8000,12000,8500])
#将数据转化到均值是0,方差是1的标准分布内
std_x = StandardScaler()
x_train = std_x.fit_transform(X)
std_y = StandardScaler()
y_train = std_y.fit_transform(Y.reshape(-1,1))
lr = LinearRegression()
#拟合
lr.fit(x_train,y_train)
x_predict = std_x.transform(np.array([[1300,3.0,0.4]]))
#预测
print(std_y.inverse_transform(lr.predict(x_predict)))
例二:使用sklearn自带的数据集训练并预测房子价格
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import r2_score
def boston_linear():
"""
线性回归直接预测房子价格
:return:
"""
#获取数据
lb = load_boston()
#分割数据集到训练集和测试集
x_train,x_test,y_train,y_test = train_test_split(lb.data,lb.target,test_size=0.25)
#特征值和目标值是都必须进行标准化处理,实例化两个标准化API
std_x = StandardScaler()
x_train = std_x.fit_transform(x_train)
#用转化训练集的标准归一化测试集
x_test = std_x.transform(x_test)
#目标值
std_y = StandardScaler()
# -1表示系统自动计算行数,1表示列数
y_train = std_y.fit_transform(y_train.reshape(-1,1))
y_test = std_y.transform(y_test.reshape(-1,1))
#estimator预测
#正规方程求解方式预测结果
lr = LinearRegression()
lr.fit(x_train,y_train)
#各项系数
print(lr.coef_)
#预测训练集的房子价格
y_lr_predict = std_y.inverse_transform(lr.predict(x_test))
#第三个原始数据
# print('原始数据',std_y.inverse_transform(y_test[7]))
#第三个预测数据
# y_lr_predict = std_y.inverse_transform(lr.predict(np.array([x_test[7]])))
print('正规方程测试集里面每个房子的预测价格',y_lr_predict)
print(std_y.inverse_transform(y_test))
print('正规方程R2评分',r2_score(std_y.inverse_transform(y_test),y_lr_predict))