线性回归糖尿病预测

from sklearn import datasets  # 此模块包含了很多用于机器学习的数据集。
diabetes = datasets.load_diabetes()  # 使用load_diabetes函数加载糖尿病数据集。

# 该数据集包含442行数据和10个属性值,分别是年龄(Age)、性别(Sex)、体质指数(Body    mass index)、平均血压(Average Blood Pressure)和一年后疾病级数指标(S1~S6)。
# Target是一年后患疾病的定量指标,适合用于回归任务

print(datasets)  # 糖尿病数据
x_data = diabetes.data  # 获取特征数据
# diabetes_data是通过pandas库中的read_csv函数读取名为diabetes.csv的数据文件得到的数据集。
# 这个数据集包含了关于葡萄糖、血压、皮肤厚度、胰岛素、身体质量指数等特征的信息
y_data = diabetes.target  # 获取目标数据
print('特征数据:\n',x_data)
# (442,10)442个数据,每行数据有10个特征数据,相当于y=a1 x1+a2 x2+...a10 x10
print(x_data.shape)
print('目标数据:\n',y_data)
print(y_data.shape)

# 把数据集拆分成:训练集和测试集
from sklearn.model_selection import train_test_split  # 用于将数据集拆分为训练集和测试集。 train训练,test测试,split拆分
from sklearn.linear_model import LinearRegression  # 用于线性回归的模型
x_train, x_test, y_train, y_test = train_test_split(x_data, y_data, test_size=0.2,random_state=9)  # 将特征数据和目标数据拆分成训练集和测试集,
# 其中测试集占总数据的20%,random_state参数用于指定随机种子,保证每次运行代码得到的结果是一致的。

clf = LinearRegression().fit(x_train,y_train)  # 创建一个LinearRegression对象并使用训练数据对其进行拟合。
print('模型的信息:\n',clf)  # 打印模型的信息

# 预测测试集结果
y_pred = clf.predict(x_test)  # 使用训练好的模型对测试集进行预测
print('预测结果为:','\n',y_pred[:20])  # 打印预测结果的前20个值
from sklearn.metrics import explained_variance_score,mean_absolute_error,\
    mean_squared_error,median_absolute_error,r2_score  # 导入用于评估预测结果的指标函数
print('平均绝对误差:',mean_absolute_error(y_test,y_pred))
print('均方误差:',mean_squared_error(y_test,y_pred))
print('中值绝对误差:',median_absolute_error(y_test,y_pred))
print('可解释方差值:',explained_variance_score(y_test,y_pred))
print('R方值:',r2_score(y_test,y_pred))

 
特征数据:
 [[ 0.03807591  0.05068012  0.06169621 ... -0.00259226  0.01990749
  -0.01764613]
 [-0.00188202 -0.04464164 -0.05147406 ... -0.03949338 -0.06833155
  -0.09220405]
 [ 0.08529891  0.05068012  0.04445121 ... -0.00259226  0.00286131
  -0.02593034]
 ...
 [ 0.04170844  0.05068012 -0.01590626 ... -0.01107952 -0.04688253
   0.01549073]
 [-0.04547248 -0.04464164  0.03906215 ...  0.02655962  0.04452873
  -0.02593034]
 [-0.04547248 -0.04464164 -0.0730303  ... -0.03949338 -0.00422151
   0.00306441]]
(442, 10)
目标数据:
 [151.  75. 141. 206. 135.  97. 138.  63. 110. 310. 101.  69. 179. 185.
 118. 171. 166. 144.  97. 168.  68.  49.  68. 245. 184. 202. 137.  85.
 131. 283. 129.  59. 341.  87.  65. 102. 265. 276. 252.  90. 100.  55.
  61.  92. 259.  53. 190. 142.  75. 142. 155. 225.  59. 104. 182. 128.
  52.  37. 170. 170.  61. 144.  52. 128.  71. 163. 150.  97. 160. 178.
  48. 270. 202. 111.  85.  42. 170. 200. 252. 113. 143.  51.  52. 210.
  65. 141.  55. 134.  42. 111.  98. 164.  48.  96.  90. 162. 150. 279.
  92.  83. 128. 102. 302. 198.  95.  53. 134. 144. 232.  81. 104.  59.
 246. 297. 258. 229. 275. 281. 179. 200. 200. 173. 180.  84. 121. 161.
  99. 109. 115. 268. 274. 158. 107.  83. 103. 272.  85. 280. 336. 281.
 118. 317. 235.  60. 174. 259. 178. 128.  96. 126. 288.  88. 292.  71.
 197. 186.  25.  84.  96. 195.  53. 217. 172. 131. 214.  59.  70. 220.
 268. 152.  47.  74. 295. 101. 151. 127. 237. 225.  81. 151. 107.  64.
 138. 185. 265. 101. 137. 143. 141.  79. 292. 178.  91. 116.  86. 122.
  72. 129. 142.  90. 158.  39. 196. 222. 277.  99. 196. 202. 155.  77.
 191.  70.  73.  49.  65. 263. 248. 296. 214. 185.  78.  93. 252. 150.
  77. 208.  77. 108. 160.  53. 220. 154. 259.  90. 246. 124.  67.  72.
 257. 262. 275. 177.  71.  47. 187. 125.  78.  51. 258. 215. 303. 243.
  91. 150. 310. 153. 346.  63.  89.  50.  39. 103. 308. 116. 145.  74.
  45. 115. 264.  87. 202. 127. 182. 241.  66.  94. 283.  64. 102. 200.
 265.  94. 230. 181. 156. 233.  60. 219.  80.  68. 332. 248.  84. 200.
  55.  85.  89.  31. 129.  83. 275.  65. 198. 236. 253. 124.  44. 172.
 114. 142. 109. 180. 144. 163. 147.  97. 220. 190. 109. 191. 122. 230.
 242. 248. 249. 192. 131. 237.  78. 135. 244. 199. 270. 164.  72.  96.
 306.  91. 214.  95. 216. 263. 178. 113. 200. 139. 139.  88. 148.  88.
 243.  71.  77. 109. 272.  60.  54. 221.  90. 311. 281. 182. 321.  58.
 262. 206. 233. 242. 123. 167.  63. 197.  71. 168. 140. 217. 121. 235.
 245.  40.  52. 104. 132.  88.  69. 219.  72. 201. 110.  51. 277.  63.
 118.  69. 273. 258.  43. 198. 242. 232. 175.  93. 168. 275. 293. 281.
  72. 140. 189. 181. 209. 136. 261. 113. 131. 174. 257.  55.  84.  42.
 146. 212. 233.  91. 111. 152. 120.  67. 310.  94. 183.  66. 173.  72.
  49.  64.  48. 178. 104. 132. 220.  57.]
(442,)
模型的信息:
 LinearRegression()
预测结果为: 
 [ 79.8526914   99.20824008 201.00969579 120.26139099 109.40283553
 247.8884225  212.74100498 134.21725446 128.38423638  57.56221826
  55.06491476 132.19102389 150.70752978 247.61229189  86.1511052
  77.07141528 173.60047519  83.81936217 121.13382049 190.32095855]
平均绝对误差: 38.258451263442346
均方误差: 2257.798900123449
中值绝对误差: 32.600475193580735
可解释方差值: 0.5891056346459892
R方值: 0.585114043418069

你可能感兴趣的:(机器学习,线性回归,算法,回归,python)