2 电影类型分析:见下图
k = 1 爱情片
k = 2 爱情片
……
k = 6 无法确定
k = 7 动作片
如果取的最近的电影数量不一样?会是什么结果? k 值取得过小,容易受到异常点的影响 k 值取得过大,样本不均衡的影响 结合前面的约会对象数据,分析K-近邻算法需要做什么样的处理 无量纲化的处理 标准化 123456
由于异常数据和某些数据过大影响整体的分类,所以需要对数据无量纲化处理,使得数据鲁棒性高且公平
3.API
sklearn.neighbors.KNeighborsClassifier(n_neighbors=5,algorithm=‘auto’)
n_neighbors:k值
3.案例分析
from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.neighbors import KNeighborsClassifier def knn_iris(): """ 用KNN算法对鸢尾花进行分类 :return: """ # 1)获取数据 iris = load_iris() # 2)划分数据集 x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=22) # 3)特征工程:标准化 transfer = StandardScaler() x_train = transfer.fit_transform(x_train) x_test = transfer.transform(x_test) # 4)KNN算法预估器 estimator = KNeighborsClassifier(n_neighbors=3) estimator.fit(x_train, y_train) #相当于把训练集特征值和目标值的模型存在estimator中 # 5)模型评估 # 方法1:直接比对真实值和预测值 y_predict = estimator.predict(x_test) #对测试集的特征值进行预测 print("y_predict:n", y_predict) print("直接比对真实值和预测值:n", y_test == y_predict) #将测试集的目标值与预测值进行比较 # 方法2:计算准确率 score = estimator.score(x_test, y_test) #将测试集的数据和训练集数据进行比较计算,得到一个准确率 print("准确率为:n", score) return None
12345678910111213141516171819202122232425262728293031323334353637注意看训练测试时先看是train还是test,然后x是特征值,y是训练值