Python3环境下kNN算法实战教程及代码修正

版权申诉
0 下载量 91 浏览量 更新于2024-12-10 收藏 472KB RAR 举报
资源摘要信息:"kNN_in_Python" - 本资源主要关注于使用Python语言实现k-近邻(k-Nearest Neighbors,简称kNN)算法。 - 资源的描述中提到,它将引导用户通过学习和实战的方式来掌握kNN算法,并且对著名书籍《机器学习实战》中的相应代码进行修正,以确保代码可以在Python 3.x版本中顺利运行。 - kNN是一种基础的机器学习算法,广泛用于分类和回归任务。它的工作原理是:给定一个训练数据集,对于每一个新的输入实例,算法会找出训练数据集中与该实例最近的k个实例,即所谓的“邻居”,然后基于这些邻居的属性来进行预测。kNN在决策时不需要训练过程,仅在需要进行预测时计算。 - 适用于该算法的场景包括:文本分类、图像识别、推荐系统等。 - Python是一种解释型编程语言,具有简洁易读、可扩展性强等特性。它在数据科学和机器学习领域非常流行,有着丰富的第三方库,如NumPy、SciPy、Pandas和Scikit-learn等,这些库为实现和应用kNN算法提供了强大的支持。 - Python 3.x是Python语言的最新主版本,与旧版本的Python 2.x存在一些不兼容的语法变化。因此,确保代码能够在Python 3.x环境下运行是使用现代Python特性的重要步骤。 - 针对《机器学习实战》书籍中的代码进行修正,说明资源提供者考虑到了实际操作中的兼容性问题,并且提供了解决方案,这对于初学者或者希望在Python 3环境下学习kNN算法的用户来说是非常有价值的。 - 压缩包内的文件名称列表显示了资源的组成,其中: - "kNN.py":很可能包含了kNN算法的Python实现代码。 - "datingTestSet.txt":可能是一个用于测试或学习kNN算法的约会数据集。 - "readme.txt":通常包含关于资源的安装、使用方法和其他重要说明。 - "testDigits" 和 "trainingDigits":可能分别包含用于测试和训练的数字数据集,这表明资源还可能包含使用kNN算法进行数字识别的示例。 由于资源包含文件名暗示了它们可能与手写数字识别或约会匹配系统相关,我们可以推断资源可能涉及到以下知识点: - kNN算法在手写数字识别中的应用,这通常涉及使用MNIST数据集。 - 在约会匹配系统中使用kNN算法,这种系统可能会分析用户的兴趣、习惯等特征来预测匹配度。 - Python的常见库使用,如可能需要使用NumPy来处理数据集和SciPy进行数学计算。 - Python 3的语法特性及其与Python 2的区别,如打印函数的使用、整数除法、内置函数的不同等。 - 实现机器学习算法时的注意事项,包括数据预处理、模型选择、超参数调整和模型评估等。 - 代码的可读性和可维护性,对于学习机器学习代码来说,编写易于理解的代码是十分重要的。 - 基于文件名推测,可能还会有对算法准确度的测试,评估kNN在不同数据集上的性能表现。

import seaborn as sns corrmat = df.corr() top_corr_features = corrmat.index plt.figure(figsize=(16,16)) #plot heat map g=sns.heatmap(df[top_corr_features].corr(),annot=True,cmap="RdYlGn") plt.show() sns.set_style('whitegrid') sns.countplot(x='target',data=df,palette='RdBu_r') plt.show() dataset = pd.get_dummies(df, columns = ['sex', 'cp', 'fbs','restecg', 'exang', 'slope', 'ca', 'thal']) from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler standardScaler = StandardScaler() columns_to_scale = ['age', 'trestbps', 'chol', 'thalach', 'oldpeak'] dataset[columns_to_scale] = standardScaler.fit_transform(dataset[columns_to_scale]) dataset.head() y = dataset['target'] X = dataset.drop(['target'], axis=1) from sklearn.model_selection import cross_val_score knn_scores = [] for k in range(1, 21): knn_classifier = KNeighborsClassifier(n_neighbors=k) score = cross_val_score(knn_classifier, X, y, cv=10) knn_scores.append(score.mean()) plt.plot([k for k in range(1, 21)], knn_scores, color='red') for i in range(1, 21): plt.text(i, knn_scores[i - 1], (i, knn_scores[i - 1])) plt.xticks([i for i in range(1, 21)]) plt.xlabel('Number of Neighbors (K)') plt.ylabel('Scores') plt.title('K Neighbors Classifier scores for different K values') plt.show() knn_classifier = KNeighborsClassifier(n_neighbors = 12) score=cross_val_score(knn_classifier,X,y,cv=10) score.mean() from sklearn.ensemble import RandomForestClassifier randomforest_classifier= RandomForestClassifier(n_estimators=10) score=cross_val_score(randomforest_classifier,X,y,cv=10) score.mean()的roc曲线的代码

2023-05-09 上传