文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python怎么用scikit-learn实现近邻算法分类

2023-07-05 07:04

关注

今天小编给大家分享一下Python怎么用scikit-learn实现近邻算法分类的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

scikit-learn库

scikit-learn已经封装好很多数据挖掘的算法

现介绍数据挖掘框架的搭建方法

转换器(Transformer)用于数据预处理,数据转换

流水线(Pipeline)组合数据挖掘流程,方便再次使用(封装)

估计器(Estimator)用于分类,聚类,回归分析(各种算法对象)

所有的估计器都有下面2个函数

fit() 训练

用法:estimator.fit(X_train, y_train)

estimator = KNeighborsClassifier() 是scikit-learn算法对象

X_train = dataset.data 是numpy数组

y_train = dataset.target 是numpy数组

predict() 预测

用法:estimator.predict(X_test)

estimator = KNeighborsClassifier() 是scikit-learn算法对象

X_test = dataset.data 是numpy数组

示例

%matplotlib inline# Ionosphere数据集# https://archive.ics.uci.edu/ml/machine-learning-databases/ionosphere/# 下载ionosphere.data和ionosphere.names文件,放在 ./data/Ionosphere/ 目录下import oshome_folder = os.path.expanduser("~")print(home_folder) # home目录# Change this to the location of your datasethome_folder = "." # 改为当前目录data_folder = os.path.join(home_folder, "data")print(data_folder)data_filename = os.path.join(data_folder, "ionosphere.data")print(data_filename)import csvimport numpy as np
# Size taken from the dataset and is known已知数据集形状X = np.zeros((351, 34), dtype='float')y = np.zeros((351,), dtype='bool')with open(data_filename, 'r') as input_file:    reader = csv.reader(input_file)    for i, row in enumerate(reader):        # Get the data, converting each item to a float        data = [float(datum) for datum in row[:-1]]        # Set the appropriate row in our dataset用真实数据覆盖掉初始化的0        X[i] = data        # 1 if the class is 'g', 0 otherwise        y[i] = row[-1] == 'g' # 相当于if row[-1]=='g': y[i]=1 else: y[i]=0
# 数据预处理from sklearn.cross_validation import train_test_splitX_train, X_test, y_train, y_test = train_test_split(X, y, random_state=14)print("训练集数据有 {} 条".format(X_train.shape[0]))print("测试集数据有 {} 条".format(X_test.shape[0]))print("每条数据有 {} 个features".format(X_train.shape[1]))

输出:

训练集数据有 263 条
测试集数据有 88 条
每条数据有 34 个features

# 实例化算法对象->训练->预测->评价from sklearn.neighbors import KNeighborsClassifierestimator = KNeighborsClassifier()estimator.fit(X_train, y_train)y_predicted = estimator.predict(X_test)accuracy = np.mean(y_test == y_predicted) * 100print("准确率 {0:.1f}%".format(accuracy))# 其他评价方式from sklearn.cross_validation import cross_val_scorescores = cross_val_score(estimator, X, y, scoring='accuracy')average_accuracy = np.mean(scores) * 100print("平均准确率 {0:.1f}%".format(average_accuracy))avg_scores = []all_scores = []parameter_values = list(range(1, 21))  # Including 20for n_neighbors in parameter_values:    estimator = KNeighborsClassifier(n_neighbors=n_neighbors)    scores = cross_val_score(estimator, X, y, scoring='accuracy')    avg_scores.append(np.mean(scores))    all_scores.append(scores)

输出:

准确率 86.4%
平均准确率 82.3%

from matplotlib import pyplot as pltplt.figure(figsize=(32,20))plt.plot(parameter_values, avg_scores, '-o', linewidth=5, markersize=24)#plt.axis([0, max(parameter_values), 0, 1.0])

Python怎么用scikit-learn实现近邻算法分类

for parameter, scores in zip(parameter_values, all_scores):    n_scores = len(scores)    plt.plot([parameter] * n_scores, scores, '-o')

Python怎么用scikit-learn实现近邻算法分类

plt.plot(parameter_values, all_scores, 'bx')

Python怎么用scikit-learn实现近邻算法分类

from collections import defaultdictall_scores = defaultdict(list)parameter_values = list(range(1, 21))  # Including 20for n_neighbors in parameter_values:    for i in range(100):        estimator = KNeighborsClassifier(n_neighbors=n_neighbors)        scores = cross_val_score(estimator, X, y, scoring='accuracy', cv=10)        all_scores[n_neighbors].append(scores)for parameter in parameter_values:    scores = all_scores[parameter]    n_scores = len(scores)    plt.plot([parameter] * n_scores, scores, '-o')

Python怎么用scikit-learn实现近邻算法分类

plt.plot(parameter_values, avg_scores, '-o')

Python怎么用scikit-learn实现近邻算法分类

以上就是“Python怎么用scikit-learn实现近邻算法分类”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯