普通最小二乘法

print(__doc__)# 输出文件开头注释的内容
import matplotlib.pyplot as plt
import numpy as np
from sklearn import  datasets,linear_model
from sklearn.metrics import  mean_squared_error,r2_score
#mean_squared_error预测值和真实值之间差的平方再求平均值。
# r^2公式就是1-(残差平方和/总体平方和)用来反映数据和模型的拟合程度

#导入diabets 糖尿病数据
'''
加载用于回归模型的数据集
这个数据集中一共有442个样本,特征向量维度为10
特征向量每个变量为实数,变化范围(-.2 ,.2)
目标输出为实数,变化范围 (25 ,346)'''
diabetes = datasets.load_diabetes()
# print(diabetes.data.shape)
# print (diabetes.data.dtype)
# print (diabetes.target.shape)
# print (diabetes.target.dtype)
#只使用一个特征
'''
为了便于画图显示
仅仅使用一维数据作为训练用的X
这里使用np.newaxis的目的是让行向量变成列向量
这样diabetes_X每一项都代表一个样
此时diabetes_X的shape是(442L, 1L)
如果代码是:diabetes_X = diabetes.data[:, 2]
则diabetes_X的shape是(442L,),是一个行向量
'''
diabetes_X = diabetes.data[:,np.newaxis,2]
'''
人工将输入数据划分为训练集和测试集
前400个样本作为训练用,后20个样本作为测试用
'''
diabetes_X_train = diabetes_X[:-20]
diabetes_X_tset = diabetes_X[-20:]
diabetes_y_train = diabetes.target[:-20]
diabetes_y_tset = diabetes.target[-20:]

# 初始化一个线性回归模型
regr = linear_model.LinearRegression()
# 基于训练数据,对线性回归模型进行训练
regr.fit(diabetes_X_train,diabetes_y_train)

diabetes_y_pred = regr.predict(diabetes_X_tset)
#w存储在其成员变量coef_中
print('Coefficients:\n',regr.coef_)
#均方误差
print('Mean squared error %.2f'% mean_squared_error(diabetes_y_tset,diabetes_y_pred))
#解释方差的分数模型在测试集上的得分,得分结果在0到1之间,数值越大,说明模型越好
print('Variance score: %.2f' % r2_score(diabetes_y_tset,diabetes_y_pred))
#plot 输出 绘制模型在测试集上的效果
plt.scatter(diabetes_X_tset,diabetes_y_tset,color = 'black')
plt.plot(diabetes_X_tset,diabetes_y_pred,color = 'blue',linewidth = 3)
'''
plt.plot(x, y, format_string, **kwargs): x为x轴数据,可为列表或数组;y同理;format_string 为控制曲线的格式字符串,
 **kwargs 第二组或更多的(x, y, format_string)format_string: 由 颜色字符、风格字符和标记字符组成。
颜色字符:‘b’蓝色  ;‘#008000’RGB某颜色;‘0.8’灰度值字符串
风格字符:‘-’实线;‘--’破折线; ‘-.’点划线; ‘:’虚线 ; ‘’‘’无线条
标记字符:‘.’点标记  ‘o’ 实心圈 ‘v’倒三角  ‘^’上三角
'''
plt.xticks(()) #控制图表的刻度 调用时不带参数,则返回当前的参数值
plt.yticks(())
plt.show()

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值