python中怎么实现抽样分类方法

发布时间:2021-07-05 16:13:05 作者:Leah
来源:亿速云 阅读:270

这期内容当中小编将会给大家带来有关python中怎么实现抽样分类方法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

11.1 算法抽查

在实践之前你并不知道哪种算法对你的的数据效果最好。 你需要尝试用不同的算法去实践, 然后知道下一步的方向。 这就是我说的算法抽查。

11.2 算法概述

两种线性算法

11.3 线性机器学习算法

有个问题, 什么叫线性, 什么叫非线性?

11.3.1 逻辑回归

名字里是回归, 其实是一种分类方法。

# Logistic Regression Classification
from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression
filename = 'pima-indians-diabetes.data.csv'
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
dataframe = read_csv(filename, names=names)
array = dataframe.values
X = array[:,0:8]
Y = array[:,8]
num_folds = 10
kfold = KFold(n_splits=10, random_state=7)
model = LogisticRegression()
results = cross_val_score(model, X, Y, cv=kfold)
print(results.mean())

# 0.76951469583

11.3.2 线性回归分析

LDA 是一种统计技术对于二分类和多分类问题。

# LDA Classification
from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
filename = 'pima-indians-diabetes.data.csv'
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
dataframe = read_csv(filename, names=names)
array = dataframe.values
X = array[:,0:8]
Y = array[:,8]
num_folds = 10
kfold = KFold(n_splits=10, random_state=7)
model = LinearDiscriminantAnalysis()
results = cross_val_score(model, X, Y, cv=kfold)
print(results.mean())

# 0.773462064252

可以看到其实scikit learn 给我们做了很多的封装, 调用过程都是一样的, 没有难度。 最简单的就可以调用然后看效果。

11.4 非线性算法

11.4.1 k比邻

k比邻 是一种基于距离的度量。 找到k个最近的样本对一个新的样本, 然后取得平均值作为预测值。 这里k 的取得就可能有不同的效果。

如下

# KNN Classification
from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.neighbors import KNeighborsClassifier
filename = 'pima-indians-diabetes.data.csv'
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
dataframe = read_csv(filename, names=names)
array = dataframe.values
X = array[:,0:8]
Y = array[:,8]
num_folds = 10
kfold = KFold(n_splits=10, random_state=7)
model = KNeighborsClassifier()
results = cross_val_score(model, X, Y, cv=kfold)
print(results.mean())

# 0.726555023923

首先 1) 没有说明k 是多少, 应该有一个默认值, 找api应该可以看到。 2) k比邻应该是很耗时的, 但是今天的实践没有反应, 原因应该是样本过少。

11.4.2 朴素贝叶斯

朴素贝叶斯是基于贝叶斯理论的一种算法。 它有一个重要的假设, 就是每个变量是独立分布的, 就是没有关联。 朴素贝叶斯计算每种参数的可能性以及每个类别的条件概率, 然后来估计新的数据并综合计算。 这样得到了新样本的估计。

# Gaussian Naive Bayes Classification
from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.naive_bayes import GaussianNB
filename = 'pima-indians-diabetes.data.csv'
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
dataframe = read_csv(filename, names=names)
array = dataframe.values
X = array[:,0:8]
Y = array[:,8]
kfold = KFold(n_splits=10, random_state=7)
model = GaussianNB()
results = cross_val_score(model, X, Y, cv=kfold)
print(results.mean())

# 0.75517771702

11.4.3 CART

决策树有几种, 比如 CART, C4.5 决策树呢基本的想法是遍历所有特征, 对第一个特征做分类, 然后在每个分支根据第二个分类, 继续。 知道所有的样本分类相同, 或者特征用完了。

# CART Classification
from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeClassifier
filename = 'pima-indians-diabetes.data.csv'
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
dataframe = read_csv(filename, names=names)
array = dataframe.values
X = array[:,0:8]
Y = array[:,8]
kfold = KFold(n_splits=10, random_state=7)
model = DecisionTreeClassifier()
results = cross_val_score(model, X, Y, cv=kfold)
print(results.mean())

# 0.697795625427

11.4.4 支持向量机

支撑向量机, 我感觉这是基本机器学习算法中最复杂的一个。

对于SVM, 基本思路可能不复杂, 但是推导过程还是不简单的。 详情见jly的博客, 当然它是基于几个牛人的理解。 后面有机会也可以写以下。

然后对于实践而言, 有几个点

# SVM Classification
from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.svm import SVC
filename = 'pima-indians-diabetes.data.csv'
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
dataframe = read_csv(filename, names=names)
array = dataframe.values
X = array[:,0:8]
Y = array[:,8]
kfold = KFold(n_splits=10, random_state=7)
model = SVC()
results = cross_val_score(model, X, Y, cv=kfold)
print(results.mean())

## 0.651025290499

11.5 小结

本章学习如何用几种分类算法做抽样。 下一章是关于回归的。

cha 13 如何选择好的算法

13.1 选择算法

这个很容易理解, 拿出来结果比较以下即可。 看代码

# Compare Algorithms
from pandas import read_csv
from matplotlib import pyplot
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC
# load dataset
filename = 'pima-indians-diabetes.data.csv'
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
dataframe = read_csv(filename, names=names)
array = dataframe.values
X = array[:,0:8]
Y = array[:,8]
# prepare models
models = []
models.append(('LR', LogisticRegression()))
models.append(('LDA', LinearDiscriminantAnalysis()))
models.append(('KNN', KNeighborsClassifier()))
models.append(('CART', DecisionTreeClassifier()))
models.append(('NB', GaussianNB()))
models.append(('SVM', SVC()))
# evaluate each model in turn
results = []
names = []
scoring = 'accuracy'
for name, model in models:
    kfold = KFold(n_splits=10, random_state=7)
    cv_results = cross_val_score(model, X, Y, cv=kfold, scoring=scoring)
    results.append(cv_results)
    names.append(name)
    msg = "%s: %f (%f)" % (name, cv_results.mean(), cv_results.std())
    print(msg)
# boxplot algorithm comparison
fig = pyplot.figure()
fig.suptitle('Algorithm Comparison')
ax = fig.add_subplot(111)
pyplot.boxplot(results)
ax.set_xticklabels(names)
pyplot.show()

result

LR: 0.769515 (0.048411)
LDA: 0.773462 (0.051592)
KNN: 0.726555 (0.061821)
CART: 0.691302 (0.069249)
NB: 0.755178 (0.042766)
SVM: 0.651025 (0.072141)

python中怎么实现抽样分类方法

上述就是小编为大家分享的python中怎么实现抽样分类方法了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. python使用pandas抽样训练数据中某个类别实例
  2. python实现的分层随机抽样案例

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python

上一篇:linux下安装wsl的方法

下一篇:Python中怎么使用requests获取网页

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》