赞
踩
数据集
调用方式:load_xxxx()
鸢尾花数据集150*4 load_iris()
手写数字load_digits()
fetch_xxx()
路透社新闻语料数据集fetch_rev1()
(较大的数据集)
实例:
#各类信息与房价 from sklearn.datasets import load_boston boston=load_boston() print(boston.data.shape) #鸢尾花数据与分类(有三类) from sklearn.datasets import load_iris iris=load_iris() print(iris.data.shape) print(iris.target_names)(skl库六大部分:分类、回归、聚类、降维、模型选择、数据预处理)
分类模型与对应模块(skl中)
(图片来自慕课Python机器学习应用_中国大学MOOC(慕课) (icourse163.org))
有监督分类(输出为离散)
评价标准:
TP正类预测为正类
FN正类预测为负类
TN负类预测为负类
FP负类预测为正类
(猜测:显示的是预报真值与判断结果?
True False Positive Negtive,++那它实际就是正类,^?)
准确率(accuracy):所有预测对的/所有(TP+TN)/(那四个)
精确率P(precision):预测为P的样本中,正确情况TP/(TP+FP)
召回率R(recall):所有正例,预报正确的情况TP/(TP+FN)
(30条消息) Scikit-Learn各算法详细参数速查手册(中文)_ice_martin的博客-CSDN博客
KNN(K近邻分类器)
已有数据与其距离最小的前k个点,看这k个点的类别。
sklearn.neighbors.KNeighborsClassifier
K大小:n_neighbors
K个点对结果影响权重:weights(uniform平均,diatance越近权重越高)
计算临近点的方法:algorithm(ball_tree,kd_tree,brute)
决策树
树形结构,顺序询问分类点属性决定分类点最终类别
criterion
朴素贝叶斯Nbayes
(30条消息) 分类算法学习(二)——贝叶斯算法的原理及简单实现_爱吃串串的瘦子的博客-CSDN博客_贝叶斯算法
求解在此项出现的条件下各个类别出现的概率,哪个更大
小规模数据,适合进行多分类(看的时候觉得很奇怪,为什么适合小规模数据,样例少,又有好些特征、情况,比如有好多种C的取值,a1分好多段,算这个的概率可能就只和十来个样例有关,算出来的概率很容易不准。后面看到解释是计算复杂度随着极大团规模的增长呈指数增长)
因版本不同引发的引用报错 教程上一般显示:from sklearn.preprocessing import Imputer 但我的电脑上就报错 改成from sklearn.impute import SimpleImputer就成功了如何解决?
先看自己的skl是什么版本
import sklearn print(sklearn.__version__)得到自己的版本,我是1.1.1。
然后去skl上查API
API Reference — scikit-learn 1.1.2 documentation (左上角那个粉红框框可以选择版本)
也可以看中文社区:API 参考-scikit-learn中文社区
(愚蠢的我竟然今天才知道这个东西
流程:
1.模块导入
import pandas as pd import numpy as np from sklearn.impute import SimpleImputer from sklearn.model_selection import train_test_split from sklearn.metrics import classification_report from sklearn.neighbors import KNeighborsClassifier from sklearn.tree import DecisionTreeClassifier from sklearn.naive_bayes import GaussianNB2.加载数据、数据预处理
(特征文件、标签文件、有时有缺失值要处理等等)
用这个函数实现
def load_datasets(feature_paths, label_paths): feature = np.ndarray(shape=(0, 41)) label = np.ndarray(shape=(0, 1)) for file in feature_paths: df = pd.read_table(file, delimiter=',', na_values='?', header=None) imp = SimpleImputer(missing_values='NaN', strategy='mean', axis=0) imp.fit(df) df = imp.transform(df) feature = np.concatenate((feature, df)) for file in label_paths: df = pd.read_table(file, header=None) label = np.concatenate((label, df)) label = np.ravel(label) return feature, label看看怎么用这个函数,并且将数据分为测试集和训练集
if __name__ == '__main__': ''' 数据路径 ''' featurePaths = ['A/A.feature', 'B/B.feature', 'C/C.feature', 'D/D.feature', 'E/E.feature'] labelPaths = ['A/A.label', 'B/B.label', 'C/C.label', 'D/D.label', 'E/E.label'] ''' 读入数据 ''' x_train, y_train = load_datasets(featurePaths[:4], labelPaths[:4]) x_test, y_test = load_datasets(featurePaths[4:], labelPaths[4:]) x_train, x_, y_train, y_ = train_test_split(x_train, y_train, test_size=0.0)(我觉得它给的后三行,展示了用两种方法切分出测试集和训练集)
3.选好分类器并进行模型训练
fit()
4.模型预测
predict()
一起展示一下:
from sklearn.neighbors import KNeighborsClassifier print('Start training knn') knn = KNeighborsClassifier().fit(x_train, y_train) print('Training done') answer_knn = knn.predict(x_test) print('Prediction done')5.结果分析(准确率召回率等等)
print('\n\nThe classification report for knn:') print(classification_report(y_test, answer_knn)) print('\n\nThe classification report for DT:') print(classification_report(y_test, answer_dt)) print('\n\nThe classification report for Bayes:') print(classification_report(y_test, answer_gnb))
解释if __name__ == '__main__':if __name__ == '__main__': 到底是个啥? - 腾讯云开发者社区-腾讯云 (tencent.com)
解释axis(30条消息) python中axis=0 axis=1的理解_《一夜飘零》的博客-CSDN博客_axis=1 python
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。