机器学习 | 机器学习100天(5) --- k-近邻算法(k-NN)
机器学习100天系列学习笔记基于机器学习100天(中文翻译版),机器学习100天(英文原版)
所有代码使用iPython Notebook实现
目录
实验综述



数据集

1.数据预处理


2.使用k-NN对训练集进行训练
3.对测试集进行预测
4.生成混淆矩阵






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

-
#导入kNN分类器类
-
from sklearn.neighbors import KNeighborsClassifier
-
#实例化类对象 指定k值/距离度量方式
-
classifier = KNeighborsClassifier(n_neighbors = 5,metric='minkowski',p=2)
-
#训练
-
classifier = classifier.fit(X_train,Y_train) #classifier.fit(X_train,Y_train)
-
#用训练好的模型在测试集上预测
-
y_pred = classifier.predict(X_test)
-
#评估模型效果
-
from sklearn.metrics import confusion_matrix
-
-
cm = confusion_matrix(Y_test,y_pred)
-
print(cm)
-
#计算准确率
-
num_correct = np.sum(Y_test==y_pred)
-
accuracy = float(num_correct)/len(y_pred)
-
print(accuracy)

没有评论:
发表评论