人工智能

  人工智能(AI)是借助计算机来模拟构建人的记忆,学习,推理,判断等高级思维过程与智能行为。人工智能涉及的学科很多,几乎是自然科学和社会科学的所有学科,已远远超出了计算机科学的范畴。简单地说是使用计算机去做过去只有人才能做的智能工作。 (有人说是第四次工业革命)

• 机器学习
  机器学习是人工智能的子集,涉及概率论、统计学等多门学科。通过利用已有数据,训练出模型,应用于预测、识别等领域。

举个例来说明

  採用机器学习中的[支持向量机(英语:support vector machine,简称:SVM)]与[Linear Regression 线性回归]
  利用数据: 美国加州大学公开的数据Pima Indians Diabetes Data Set(皮马印第安人糖尿病数据集) 为女性数据
(※对于为啥无空腹血糖值数据、是在什么背景下收集到的数据就不去深究)

  数据的列说明
   第1列: 怀孕次数
   第2列: 二小时口服葡萄糖耐量测试的血糖浓度 (※第二次测试时为非选项)
   第3列: 舒张期血压
   第4列: 三头肌皮脂厚度
   第5列: 二小时血清胰岛素 (※第二次测试时为非选项)
   第6列: 身体质量(BMI)指数
   第7列: 糖尿病家族遗传作用值
   第8列: 年龄
   第9列: 是否糖尿病

  编程代码(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)指数]