採用机器学习中的[支持向量机(英语:support vector machine,简称:SVM)]与[Linear Regression 线性回归]
  利用数据: 美国加州大学公开的数据Pima Indians Diabetes Data Set(皮马印第安人糖尿病数据集) 为女性数据
(※对于为啥无空腹血糖值数据、是在什么背景下收集到的数据就不去深究)
  编程代码(Python):
import pandas as pd import numpy as np from sklearn.model_selection import train_test_split from sklearn.svm import SVC from sklearn import linear_model from sklearn.preprocessing import Imputer from sklearn.preprocessing import MinMaxScaler def analyze_data(sData_Path, sUse_AllCol = True): csvType = '第一次测定 ---采用数据的全部列---' Use_cols = None Col_LastIndex = 8 if not sUse_AllCol: csvType = '第二次测定 ---去掉[第2列(血糖浓度)][第5列(血清胰岛素)]---' Use_cols = [0, 2, 3, 5, 6, 7, 8] Col_LastIndex = len(Use_cols) - 1 print('\n{}'.format(csvType)) df = pd.read_csv(sData_Path, header=None, usecols=Use_cols) X = df.iloc[:, :Col_LastIndex] Y = df.iloc[:, Col_LastIndex:].values.flatten() # 缺失值处理 imp_lastIndex = Col_LastIndex imp = Imputer(missing_values=0, strategy='median', axis=0) imp.fit(X.iloc[:, 1:imp_lastIndex]) X.iloc[:, 1:imp_lastIndex] = imp.transform(X.iloc[:, 1:imp_lastIndex]) # 特征缩放为[0 - 1]之间 ms = MinMaxScaler() ms.fit(X) X = ms.transform(X) X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.15, random_state=0) svc = SVC() #使用支持向量机模型 svc.fit(X_train, Y_train) #训练模型 print('评分 Test score: {:.3f}'.format(svc.score(X_test, Y_test))) #评分 (预测的准确率) clf = linear_model.LinearRegression() #线性回归模型 clf.fit(X, Y) print("回归系数:") print(np.round(clf.coef_, 3)) print('切片: {}'.format(round(clf.intercept_, 3))) analyze_data("pima-indians-diabetes.data.csv", True) #调用函数 第一次测定 analyze_data("pima-indians-diabetes.data.csv", False) #调用函数 第二次测定
第一次测定 ---采用数据的全部列---
评分 Test score: 0.810
回归系数:
[0.351    1.014    -0.119    0.018    -0.13    0.709    0.306    0.125]
切片: -0.448
第二次测定 ---去掉[第2列(血糖浓度)][第5列(血清胰岛素)]---
评分 Test score: 0.698
回归系数:
[0.329    0.036    0.117    0.916    0.437    0.357]
切片: -0.185
根据第一次测定结果的回归系数:[0.351    1.014    -0.119    0.018    -0.13    0.709    0.306    0.125], 切片: -0.448
第一次测定的多元线性回归式分程式可写成:
根据第二次测定结果的回归系数:[0.329    0.036    0.117    0.916    0.437    0.357], 切片: -0.185
第二次测定的多元线性回归式分程式可写成:
  处理前已将各数据缩放到[0-1]之间,各变数(各列)回归系数就有了可比性,回归系数越大对结果(是否糖尿病)的影响度就越大
第一次测定中影响度最大的是[第2列: 二小时口服葡萄糖耐量测试的血糖浓度](回归系数:1.014)接下来就是[第6列: 身体质量(BMI)指数](回归系数:0.709)
第二次测定中影响度最大的是[第6列: 身体质量(BMI)指数](回归系数:0.916)
  因为糖尿病所以[二小时口服葡萄糖耐量测试的血糖浓度]高,把这因素去掉,就剩[第6列: 身体质量(BMI)指数]了
可以说在测定数据中[第6列: 身体质量(BMI)指数]对糖尿病的影响最大
※对各种研究数据不知道哪个重要,一团迷雾时,
利用机器学习的线性回归模型求回归系数,也许会收到柳暗花明又一村的效果。
对预测是否糖尿病,第一次测定准确率为 81.0%
对预测是否糖尿病,第二次测定准确率为 69.8%
(※用集成学习算法可能预测的准确率会更高)
对糖尿病影响最大的是[第6列: 身体质量(BMI)指数]