zoukankan      html  css  js  c++  java
  • 线性回归

    1 一元线性回归

    如下对y=2x+7的一次函数进行了模拟回归,其中coef_是斜率,intercept_是截距.

    mport matplotlib.pyplot as plt
    import numpy as np
    from sklearn import linear_model
    from sklearn.metrics import mean_squared_error, r2_score
    
    y = [9,11,13,15,17]
    x_train= np.arange( 1, 6, 1).reshape([-1,1])
    
    x_test = np.array([[6],[7]])
    y_test = [18,22]
    
    # 建一个对象并使用训练集训练模型
    regr = linear_model.LinearRegression()
    regr.fit(x_train, y)
    y_pred = regr.predict(x_test)
    
    # 查看系数
    print('斜率是: 
    ', regr.coef_)
    print('截距是: 
    ', regr.intercept_)
    
    # # 查看均方误差
    # print("Mean squared error: %.2f" % mean_squared_error(y_test, y_pred))
    # # 解释方差分数:1是完美的预测
    # print('Variance score: %.2f' % r2_score(y_test, y_pred))
    
    plt.scatter(x_train, y,  color='black')
    plt.scatter(x_test, y_test,  color='green')
    # 回归直线用蓝色表示
    plt.plot(x_train, regr.predict(x_train), color='blue', linewidth=3)
    # 预测直线用红色表示
    plt.plot(x_test, regr.predict(x_test), color='red', linewidth=3)
    plt.xticks(())
    plt.yticks(())
    plt.show()
    View Code
    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    from sklearn.linear_model import LinearRegression #导入机器学习库中的线性回归模块
    
    data=pd.DataFrame({'square_feet':[150,200,250,300,350,400,600],
                       'price':[5450,6850,8750,9650,10450,13450,16450]})
    #创建一组7行2列的数据,square_feet为房屋面积,price为对应价格
    
    data_train=np.array(data['square_feet']).reshape(data['square_feet'].shape[0],1)#这里是将数据转化为一个1维矩阵
    print(type(data_train))
    print(data_train)
    data_test=data['price']
    
    
    #创建线性回归模型,拟合面积与价格并通过面积预测价格
    regr=LinearRegression() #创建线性回归模型,参数默认
    # 这里的fit()中的第一个参数必须是二维数组才行,否则报错
    regr.fit(data_train,data_test)#拟合数据,square_feet将房屋面积作为x,price价格作为y;也可以理解用面积去预测价格
    a=regr.predict([[268.5]])
    print(a)#查看预测结果
    print(regr.score(data_train,data_test))#查看拟合准确率情况,这里的检验是 R^2 ,趋近于1模型拟合越好
    #预测的结果:268.5平的房子价格为8833.54, R^2 =0.967
    #我们来画个图看一下数据最后是什么样的
    plt.scatter(data['square_feet'],data['price']) #画散点图看实际面积和价格的分布情况
    plt.plot(data['square_feet'],regr.predict(np.array(data['square_feet']).reshape(data['square_feet'].shape[0],1)),color='red') #画拟合面积与价格的线型图
    
    plt.show()
    View Code

    参考:https://blog.csdn.net/Arwen_H/article/details/82181288

    官网示例:

    import matplotlib.pyplot as plt
    import numpy as np
    from sklearn import datasets, linear_model
    from sklearn.metrics import mean_squared_error, r2_score
    
    #加载糖尿病数据集
    diabetes = datasets.load_diabetes()
    
    #只使用一个特性
    diabetes_X = diabetes.data[:, np.newaxis, 2]
    
    # 将数据分为训练diabetes_X_train /测试集diabetes_X_test
    diabetes_X_train = diabetes_X[:-20]
    diabetes_X_test = diabetes_X[-20:]
    
    # 把目标分成训练diabetes_y_train /测试集diabetes_y_test
    diabetes_y_train = diabetes.target[:-20]
    diabetes_y_test = diabetes.target[-20:]
    
    #创建线性回归对象
    regr = linear_model.LinearRegression()
    
    #使用训练集训练模型
    regr.fit(diabetes_X_train, diabetes_y_train)
    print(diabetes_X_train)
    #使用测试集进行预测
    diabetes_y_pred = regr.predict(diabetes_X_test)
    
    # 查看系数
    print('Coefficients: 
    ', regr.coef_)
    # 查看均方误差
    print("Mean squared error: %.2f"
          % mean_squared_error(diabetes_y_test, diabetes_y_pred))
    # 解释方差分数:1是完美的预测
    print('Variance score: %.2f' % r2_score(diabetes_y_test, diabetes_y_pred))
    
    #图输出
    plt.scatter(diabetes_X_test, diabetes_y_test,  color='black')
    plt.plot(diabetes_X_test, diabetes_y_pred, color='blue', linewidth=3)
    plt.xticks(())
    plt.yticks(())
    
    plt.show()
    View Code
  • 相关阅读:
    [android] 帧布局
    [android] 表格布局和绝对布局
    使用LVS实现负载均衡原理及安装配置详解
    学习Docker之Dockerfile的命令
    使用docker-compose部署nginx
    CentOS Bash 命令补全增强软件包 bash-completion
    “三次握手,四次挥手”你真的懂吗?
    0777 0的意思
    linux文件或目录权限修改后如何恢复(备份了权限就能恢复)
    centos7进入单用户模式
  • 原文地址:https://www.cnblogs.com/xxswkl/p/11695659.html
Copyright © 2011-2022 走看看