• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
百里丶落云
Gee,gee,baby,baby
            管理     
基于skearn-learn 框架 的线性回归

 

skearn-learn 是一个机器学习的库, 可以省略很多自己写的步骤

 

 

 

 

 

一:导入包和数据集

 

import matplotlib.pyplot as plt   #导入画图包
import numpy as np #数据包
from sklearn import linear_model #导入sklearn 机器学习线性回归包
from sklearn.metrics import mean_squared_error, r2_score #机器学习检测包

 

 

 

展示元数据集

 

def loadDataSet(fileName):
   
 
    numFeat = len(open(fileName).readline().split('\t')) - 1
    xArr = []; yArr = []
#     print(numFeat)
    fr = open(fileName)
    
#     print(fr)
    for line in fr.readlines():
#         print(line)
        lineArr =[]
        curLine = line.strip().split('\t')
        for i in range(numFeat):
            lineArr.append(float(curLine[i]))
        xArr.append(lineArr)
        yArr.append(float(curLine[-1]))
    return xArr, yArr
xArr, yArr = loadDataSet('ex0.txt')  

 

 

 

 

打印元数据集坐标图

 

n = len(xArr)                                                        #数据个数
xcord = []; ycord = []                                                #样本点
for i in range(n):                                                   
    xcord.append(xArr[i][1]); ycord.append(yArr[i])                    #样本点
fig = plt.figure()
ax = fig.add_subplot(111)                                            #添加subplot
ax.scatter(xcord, ycord, s = 20, c = 'blue',alpha = .5)                #绘制样本点
plt.title('DataSet')                                                #绘制title
plt.xlabel('X')

 

 

 

 

 

 

 

 

 

利用机器学习包进行模型训练

reg = linear_model.LinearRegression()   #创建线性回归对象
xArr_x_train =xArr[:-20]    #取 x后20为训练集
xArr_x_text =xArr[-20:]   #取 x前20为测试集


yArr_y_train =yArr[:-20]  #同理
yArr_y_text =yArr[-20:]#同理

xMat = np.mat(xArr_x_train)      #创建xMat矩阵,


regr.fit(xMat[:,1], yArr_y_train) #线性回归训练, 取x的1列特征内容
xmattext =np.mat(xArr_x_text) #创建xmattext 矩阵
yArr_y_pred = regr.predict(xmattext[:,1])  #验证训练结果 获取训练y_pred




print('b值',regr.intercept_)
print('Coefficients 系数 : \n', regr.coef_)
print('Mean squared error 均方误差: %.2f'
      % mean_squared_error(yArr_y_text, yArr_y_pred))

print('Coefficient of determination  决定系数  : %.2f'
      % r2_score(yArr_y_text, yArr_y_pred))




plt.scatter(xMat[:,1].flatten().A[0], yMat.flatten().A[0] , s = 20  ,color='blue') #打印撒点图

plt.plot(xmattext[:,1].flatten().A[0],  ymattext.flatten().A[0] , color='black', linewidth=3) #打印线性图
 
plt.xticks(())
plt.yticks(())

plt.show()

 

 

 

 

 

 

 

 

 

 

 

用到的知识点

 

参数:

 

fit_intercept:一个布尔值,指定是否需要计算b值。如果为False,那么不计算b值。

 

normalize: 一个布尔值。如果为True,那么训练样本在回归之前会被归一化。

 

copy_x: 一个布尔值。如果为True,则会复制X。

 

n_jobs: 一个正数。任务并行时指定的CPU数量。如果为-1,则使用所有可用的CPU。

 

coef_: 权重向量。

intercept_: b值。

 

fit(X, y[ ,sample_weight]): 训练模型。

predict(X): 用模型进行预测,返回预测值。

 

年与时驰,意与日去,遂成枯落, 多不接世,悲守穷庐,将复何及。
posted on 2020-06-03 16:23  百里丶落云  阅读(348)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3