2019年1月15日星期二

机器学习 | 机器学习100天(5) --- k-近邻算法(k-NN)

机器学习 | 机器学习100天(5) --- k-近邻算法(k-NN)

所有代码使用iPython Notebook实现
目录

实验综述


数据集

1.数据预处理

  1. '''1. 导入相关库'''
  2. import numpy as np
  3. import pandas as pd
  4. import matplotlib.pyplot as plt
  5. %matplotlib inline
  6. '''2. 导入数据集'''
  7. data = pd.read_csv('Social_Network_Ads.csv')
  8. print(data.head())
  9. #分离特征矩阵X和标签向量Y
  10. X = data.iloc[:,2:-1].values #只使用年龄和预估薪资两个特征
  11. Y = data.iloc[:,-1].values
  12. '''3. 检查缺失数据'''
  13. #没有缺失数据
  14. '''4. 解析分类数据'''
  15. #没有分类数据 不需要数字化/转化one-hot编码
  16. '''5. 避免虚拟变量陷阱'''
  17. #没有虚拟变量
  18. '''6. 分割数据集为训练集和测试集'''
  19. from sklearn.model_selection import train_test_split
  20. X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_size=0.25,random_state=0)
  21. '''7. 特征缩放'''
  22. from sklearn.preprocessing import StandardScaler
  23. #实例化StandardScaler类的对象
  24. sc = StandardScaler()
  25. #用对象调用类内的特征缩放方法
  26. X_train = sc.fit_transform(X_train)
  27. X_test = sc.fit_transform(X_test)

2.使用k-NN对训练集进行训练

  1. #导入kNN分类器类
  2. from sklearn.neighbors import KNeighborsClassifier
  3. #实例化类对象 指定k值/距离度量方式
  4. classifier = KNeighborsClassifier(n_neighbors = 5,metric='minkowski',p=2)
  5. #训练
  6. classifier = classifier.fit(X_train,Y_train) #classifier.fit(X_train,Y_train)

3.对测试集进行预测

  1. #用训练好的模型在测试集上预测
  2. y_pred = classifier.predict(X_test)

4.生成混淆矩阵

  1. #评估模型效果
  2. from sklearn.metrics import confusion_matrix
  3. cm = confusion_matrix(Y_test,y_pred)
  4. print(cm)
  5. #计算准确率
  6. num_correct = np.sum(Y_test==y_pred)
  7. accuracy = float(num_correct)/len(y_pred)
  8. print(accuracy)



没有评论:

发表评论