机器学习-线性模型示例

参考文档

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))

猜你喜欢

转载自blog.csdn.net/j123__/article/details/82949551