1.线性回归Linear Regression
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 18/2/27 上午11:25
# @Author : cicada@hole
# @File : lineModel.py
# @Desc : 第一节广义线性模型
# @Link : http://scikit-learn.org/stable/modules/linear_model.html
# reg = linear_model.LinearRegression() #线性回归
# reg.fit([[0, 0, 0],[1, 1, 1],[2, 2,2]],[0, 1, 2]) # 前边是x的列表,后边是对应的y值,即 y= w0x0+w1x1
# print(reg.coef_)# coef_拟合参数
# rt = reg.predict([[2,2,2],[3,4,3],[3,1,0]])
# print(rt)
from sklearn import datasets, linear_model
import matplotlib.pyplot as plt
import numpy as np
from sklearn.metrics import mean_squared_error, r2_score #均方差
class LinearRegression:
# 加载糖尿病数据集
diabetes = datasets.load_diabetes()
#使用一个特征
diabetes_X = diabetes.data[:, np.newaxis, 2] #np.newaxis的功能是插入新维度
#把数据分成训练集和测试集
diabetes_X_train = diabetes_X[:-5]
diabetes_X_test = diabetes_X[-5:]
diabetes_y_train = diabetes.target[:-5]
diabetes_y_test = diabetes.target[-5:]
#创建线性回归对象
regr = linear_model.LinearRegression()
#用训练集训练数据
regr.fit(diabetes_X_train, diabetes_y_train)
#预测结果
diabetes_y_pred = regr.predict(diabetes_X_test)
print(np.hstack((diabetes_y_test,diabetes_y_pred)))
#打印系数
print('Coefficients: \n', regr.coef_)
#最小均方差
print("Mean squared error: %.2f"
% mean_squared_error(diabetes_y_test, diabetes_y_pred))
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()