当前位置:   article > 正文

机器学习1一knn算法

机器学习1一knn算法

1.基础知识点介绍

曼哈顿距离一般是比欧式距离长的除非在一维空间

拐弯的就是曼哈顿距离

Knn查看前5行数据head(),info看空非空

查看特征对应的类型

Head()默认前5行,head(3)就是前3行数据

Unique()可以查看分类后的结果

csv的数据应该是逗号分隔,但也不确定,要去查看数据不要只看拓展名要点进去看一下

这个删掉没有把原数据删掉

如果把原数据删掉加上inplace=true

  1. #练习1 导入数据分析三剑客
  2. import numpy as np
  3. import pandas as pd
  4. import matplotlib.pyplot as plt
  5. #导入KNN算法
  6. #sklearn机器学习库,KNeighborsClassifier :KNN分类器
  7. from sklearn.neighbors import KNeighborsClassifier
  8. ### 1. k-近邻算法原理
  9. #简单地说,K-近邻算法采用测量不同特征值之间的距离方法进行分类(K-Nearest Neighbor,KNN)
  10. ##### 工作原理 **欧几里得距离(Euclidean Distance)**欧氏距离是最常见的距离度量,衡量的是多维空间中各个点之间的绝对距离。
  11. knn优缺点
  12. #- 优点:精度高、对异常值不敏感。
  13. #- 缺点:时间复杂度高、空间复杂度高。
  14. #### 2. 在scikit-learn库中使用k-近邻算法
  15. #- 分类问题:from sklearn.neighbors import KNeighborsClassifier
  16. #- 回归问题:from sklearn.neighbors import KNeighborsRegressor
  17. #导入电影数据
  18. movie=pd.read_excel('../data/movies.xlsx',sheet_name=1)
  19. movie
  20. #中文不可以训练,电影名称从业务的角度也不能拿来训练
  21. data=movie[['武大镜头','接吻镜头']].copy()
  22. data #必须是二维数据
  23. # target (label) 标签,标记,目标结果
  24. target=movie.分类情况
  25. target
  26. data.shape,target.shape
  27. # 使用KNN算法
  28. # 1. 创建KNN对象
  29. # n_neighbors=5 : K=5,会找最近的5个近邻
  30. # p=2:默认值,表示使用欧式距离,p=1表示曼哈顿距离
  31. knn=KNeighborsClassifier(n_neighbors=5,p=2)
  32. knn
  33. # 2. 训练 : 训练历史数据
  34. # 数据:
  35. # 训练数据: 用来训练
  36. # 测试数据:或验证数据,用来测试或验证模型的好坏
  37. # X :必须是二维数据
  38. # y :结果,一般是一维
  39. knn.fit(X=data,y=target)
  40. data
  41. # 3. 预测新数据
  42. # 提供测试数据
  43. X_test=np.arry([[50, 1], [1, 20], [30, 1], [2, 10], [20, 10]])
  44. X_test=pd.DataFrame(X_test,columns=data.columns)
  45. y_test=np.array(['动作片', '爱情片', '动作片', '爱情片', '动作片'])
  46. # 预测:predict
  47. y_pred=knn.predict(X_test)
  48. y_pred
  49. # 4. 计算得分: 准确率
  50. knn.score(X_test,y_test)
  51. 总结:# 数据
  52. # data, target : 一般表示全部数据
  53. # 训练数据
  54. # X_train : 训练集中的数据
  55. # y_train :训练集中的数据对应的结果
  56. #
  57. # 预测数据
  58. # X_test : 测试集中的数据
  59. # y_test : 测试集中的数据对应的真实结果
  60. # y_pred : 测试集中的数据对应的预测结果

  1. #from sklearn.datasets:提供现成的数据集,主要用来学习和测试
  2. #导入数据
  3. import pandas as pd
  4. import numpy as np
  5. from sklearn.datasets import load_iris
  6. from sklearn.neighbors import KNeighborsClassifier
  7. iris=load_iris()
  8. iris
  9. data=iris['data']
  10. target=iris['target']
  11. target_names=iris['target_names']
  12. feature_names=iris['feature_names']
  13. data.shape,target.shape
  14. target
  15. target_names
  16. feature_names
  17. pd.DataFrame(data,columns=feature_names)
  18. #拆分数据集
  19. from sklearn.model_selection import train_test_split
  20. # test_size 有2种写法:
  21. # 1. int整数,那么就表示使用这么多的数据作为测试数据
  22. # 2. float小数,0-1之间,测试数据占所有数据的比重, 比如:0.2 = 150*20% = 20
  23. # 训练数据: X_train, y_train
  24. # 测试数据: X_test, y_test
  25. x_train,x_test,y_train,y_test=train_test_split(data,target,test_size=0.2)
  26. display(x_train.shape,x_test.shape)
  27. #使用knn算法knn = KNeighborsClassifier()
  28. #1.创建knn
  29. knn=KNeighborsClassifier()
  30. #2.训练
  31. knn.fit(x_train,y_train)
  32. #3.预测
  33. y_pred=knn.predict(x_test)
  34. y_pred
  35. #得分
  36. knn.score(x_test,y_test)
  1. #4. 拆分数据集:训练数据和预测数据
  2. # - train_test_split
  3. import numpy as np
  4. import pandas as pd
  5. #import matplotlib.pyplot as plt
  6. from sklearn.neighbors import KNeighborsClassifier
  7. x_train,x_test,y_train,y_test=train_test_split(data,target,test_size=0.2)
  8. x_train.shape,x_test.shape
  9. #使用knn算法
  10. knn=KNeighborsClassifier()
  11. knn.fit(x_train,y_train)
  12. #预测
  13. knn = KNeighborsClassifier()
  14. knn.fit(x_train,y_train)
  15. #预测
  16. knn.predict(x_test)
  17. #得分
  18. knn.score(x_test,y_test)
  19. #6. 保存训练模型
  20. # - import joblib
  21. # - 保存模型: joblib.dump(knn, 'knn.plk')
  22. # - 导入模型: joblib.load('knn.plk')
  23. import joblib
  24. joblib.dump(knn,'knn.plk')
  25. #导入模型
  26. new_knn=joblib.load('knn.plk')
  27. new_knn
  28. #预测
  29. new_knn.predict(x_test)
  1. #### 3、癌症预测
  2. #- 读取cancer.csv文件
  3. #- 删除列: 'ID'
  4. #- Diagnosis 是target
  5. #- 使用train_test_split
  6. #- 使用KNN训练,并预测
  7. #- 交叉表查看结果pd.crosstab( )
  8. import pandas as pd
  9. import numpy as np
  10. from sklearn.model_selection import train_test_split
  11. from sklearn.neighbors import KNeighborsClassifier
  12. cancer=pd.read_table('../data/cancer.csv')
  13. cancer.shape
  14. cancer.head()
  15. cancer.drop(columns='ID',inplace=True)
  16. cancer.head(3)
  17. data=cancer.iloc[:,1:].copy()
  18. target.unique()
  19. x_train,x_test,y_train,y_test=train_test_split(data,target,test_size=0.2)
  20. #knn
  21. knn=KNeighborsClassifier()
  22. knn.fit(x_train,y_train)
  23. #预测
  24. y_pred=knn.predict(x_test)
  25. y_pred
  26. #得分
  27. knn.score(x_test,y_test)
  28. pd.crosstab(
  29. index=y_pred, #预测结果
  30. columns=y_test,
  31. rownames=['预测'],
  32. colnames=['真实'],
  33. margins=True
  34. )

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/91066
推荐阅读