需求:对糖尿病数据集进行回归分析,以便对未知数据进行预测。
数据集Diabetes:1.包含442个患者的10个生理特征
2.10个特征变量数据均已进行规范化
数据集描述:
# 加载数据集 diabetes = datasets.load_diabetes() # 显示其描述 print("【DESCR】\n", diabetes.DESCR)
完整代码:
from sklearn import datasets from sklearn import linear_model from sklearn.model_selection import train_test_split # 引入均方误差 from sklearn.metrics import mean_squared_error # 加载糖尿病数据集 diabetes = datasets.load_diabetes() # 得到糖尿病特征向量集 data = diabetes.data # 数据探索 print(data.shape) # 查看数据第0行数据 print(data[0]) # 训练集 70%,测试集30%(diabetes.data是全数据集的特征,diabetes.target是全数据集的标签) # random_state=14 控制每次随机的结果都是一样的,数字大小没有规定,只有有个数就行 # 当然不同的数字随机的结果是不一样的 train_x, test_x, train_y, test_y = train_test_split(diabetes.data, diabetes.target, test_size=0.3, random_state=14) print(len(train_x)) # 回归训练及预测(线性回归模型) clf = linear_model.LinearRegression() # 拟合训练集的特征和标签,来学习得到模型参数 clf.fit(train_x, train_y) # 训练出的线性模型的系数(每条数据有10个不同的特征,但对应着同一个y值,所以有10个线性模型,即有10个系数) print(clf.coef_) # print(train_x.shape) # print(clf.score(test_x, test_y)) # 计算预测结果 pred_y = clf.predict(test_x) # 计算均方误差(损失值) print(mean_squared_error(test_y, pred_y)) # 通过决定系数来来判断回归方程的拟合程度(分数越高说明拟合的程度越好) r_sq = clf.score(train_x, train_y) # 确定系数 print('r_sq:', r_sq)
运行结果:
今天阴天,同时伴随着淅淅沥沥的小雨,喜欢下雨的声音......