几种分类器的基本调用方法

本节的目的是基本的使用这些工具,达到熟悉sklearn的流程而已,既不会设计超参数的选择原理(后面会进行介绍),也不会介绍数学原理(应该不会涉及了,打公式超麻烦,而且近期也没有系统的学习机器学习数学原理的计划,下学期可能会重拾cs229,当然如果在上课展示或者实验室任务中用到的特定方法还是很可能用博客记录一下的,笑)。

Logistic & SGDC

'''Logistic & SGDC'''

'''数据预处理'''
import numpy as np
import pandas as pd column_names = ['Sample code number', 'Clump Trickness', 'Uniformity of Cell Size', 'Uniformity of Cell Shape',
'Marginal Adhesion', 'Single Epithelial Cell Size', 'Bare Nuclei', 'Bland Chromatin',
'Normal Nucleoli', 'Mitoses', 'Class']
data = pd.read_csv('C:\Projects\python3_5\Keggle\\breast-cancer-wisconsin.csv', names = column_names)
# print(data.shape) # (699,11)
data = data.replace(to_replace = '?', value = np.nan) # 原数据缺失值为?,替换为标准缺失值
data = data.dropna(how = 'any') # 将含有标准缺失值的行替换掉
print(data.shape, '\r', '-----'*15) '''训练测试数据分割'''
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(data[column_names[1:10]], data[column_names[10]],
test_size=0.25, random_state=33)
print(y_train.value_counts())
print(y_test.value_counts()) '''标准化数据并执行分类'''
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression, SGDClassifier # 方差为1,均值为0
ss = StandardScaler()
X_train = ss.fit_transform(X_train)
X_test = ss.fit_transform(X_test) lr = LogisticRegression()
lr.fit(X_train, y_train)
lr_y_predict = lr.predict(X_test) sgdc = SGDClassifier()
sgdc.fit(X_train, y_train)
sgdc_y_predict = sgdc.predict(X_test) '''模型测评'''
from sklearn.metrics import classification_report print('LR准确率:', lr.score(X_test, y_test))
print(classification_report(y_test, lr_y_predict, target_names=['Benign', 'Malignant']))
print('SGDC准确率:', sgdc.score(X_test, y_test))
print(classification_report(y_test, sgdc_y_predict, target_names=['Benign', 'Malignant'])) # SGDC效果浮动性很大,LR很稳定,一般情况下LR准确度更高
# recall召回率:预测为真的中真的为真的
# precision精确率:真的为真中被预测为真的

 

SVM

'''SVM'''

'''载入数据'''
from sklearn.datasets import load_digits digits = load_digits()
print(digits.data.shape) '''训练测试数据划分'''
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target, test_size=0.25, random_state=33)
print(y_train.shape, '\r', y_test.shape)
# print(y_test.value_counts()) 失败的原因是这是一个DataFrame方法 '''标准化&分类'''
from sklearn.preprocessing import StandardScaler
from sklearn.svm import LinearSVC # 基于线性假设的支持向量机SVC ss = StandardScaler()
X_train = ss.fit_transform(X_train)
X_test = ss.fit_transform(X_test) lsvc = LinearSVC()
lsvc.fit(X_train, y_train)
y_predict = lsvc.predict(X_test) '''评估模型'''
from sklearn.metrics import classification_report print('准确率:', lsvc.score(X_test, y_test))
print(classification_report(y_test, y_predict, target_names=digits.target_names.astype(str)))

  

朴素贝叶斯

'''朴素贝叶斯'''

'''载入数据集'''
from sklearn.datasets import fetch_20newsgroups news = fetch_20newsgroups(subset='all')
print(len(news.data))
print(news.data[0]) '''划分数据集'''
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(news.data, news.target, test_size=0.25, random_state=33) '''文本数据向量化'''
# 不明白原理,需要进一步查询
from sklearn.feature_extraction.text import CountVectorizer vec = CountVectorizer()
X_train = vec.fit_transform(X_train)
X_test = vec.transform(X_test)
# print('-----'*15)
# print(X_train[0]) '''朴素贝叶斯分类器'''
from sklearn.naive_bayes import MultinomialNB mnb = MultinomialNB()
mnb.fit(X_train, y_train)
y_predict = mnb.predict(X_test) '''评估模型'''
from sklearn.metrics import classification_report print('准确率:', mnb.score(X_test, y_test))
print(classification_report(y_test, y_predict, target_names=news.target_names))

  

K近邻

'''K近邻'''

'''数据集载入'''
from sklearn.datasets import load_iris iris = load_iris()
print(iris.data.shape)
print(iris.DESCR) '''数据集划分'''
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.25, random_state=33) '''数据集预处理(标准化)'''
from sklearn.preprocessing import StandardScaler ss = StandardScaler()
X_train = ss.fit_transform(X_train)
X_test = ss.fit_transform(X_test) '''K近邻分类'''
from sklearn.neighbors import KNeighborsClassifier knc = KNeighborsClassifier()
knc.fit(X_train, y_train)
y_predict = knc.predict(X_test) '''评估'''
from sklearn.metrics import classification_report print(knc.score(X_test, y_test))
print(classification_report(y_test, y_predict, target_names=iris.target_names))

sklearn.feature_extraction.text.CountVectorizer

建立词袋的方法,可以通过binary参数True和False表示是使用0,1还是使用出现次数记录对应单词,

print(vec.get_feature_names())
输出的是一个list,元素是很多字符串,表示特征
print(X_train[0])
输出的是一个稀疏矩阵的第0行(第一个文件),形式如下,

  (0, 57011) 1
  (0, 96571) 1
  (0, 11905) 1
  : :
  (0, 88624) 1
  (0, 54291) 1
  (0, 137926) 2

 为了直观理解,我们这样,

print(X_train[0][0, 57011])
会输出1,所以这真的是个矩阵(废话),而且稀疏矩阵提取元素是有问题的,
print(X_train[0][57011])
会报错,
print(X_train[0, 57011])
就没问题,
X_train.toarray()
可以转化为np数组

『Kaggle』Sklearn中几种分类器的调用&词袋建立的更多相关文章

  1. python:函数中五花八门的参数形式(茴香豆的『回』字有四种写法)

    毫不夸张的说,python语言中关于函数参数的使用,是我见过最为灵活的,随便怎么玩都可以,本文以数学乘法为例,演示几种不同的传参形式: 一.默认参数 def multiply1(x, y): retu ...

  2. 『Kaggle』分类任务_决策树&集成模型&DataFrame向量化操作

    决策树这节中涉及到了很多pandas中的新的函数用法等,所以我单拿出来详细的理解一下这些pandas处理过程,进一步理解pandas背后的数据处理的手段原理. 决策树程序 数据载入 pd.read_c ...

  3. 『转载』Matlab中fmincon函数获取乘子

    Matlab中fmincon函数获取乘子 一.输出结构 [x,fval,exitflag,output,lambda] = fmincon(......) 二.结构说明 lambda结构 说     ...

  4. JS 中通过对象关联实现『继承』

    JS 中继承其实是种委托,而不是传统面向对象中的复制父类到子类,只是通过原型链将要做的事委托给父类. 下面介绍通过对象关联来实现『继承』的方法: Foo = { // 需要提供一个 init 方法来初 ...

  5. 『Python题库 - 简答题』 Python中的基本概念 (121道)

    ## 『Python题库 - 简答题』 Python中的基本概念 1. Python和Java.PHP.C.C#.C++等其他语言的对比? 2. 简述解释型和编译型编程语言? 3. 代码中要修改不可变 ...

  6. 『浅入深出』MySQL 中事务的实现

    在关系型数据库中,事务的重要性不言而喻,只要对数据库稍有了解的人都知道事务具有 ACID 四个基本属性,而我们不知道的可能就是数据库是如何实现这四个属性的:在这篇文章中,我们将对事务的实现进行分析,尝 ...

  7. 『TensorFlow』通过代码理解gan网络_中

    『cs231n』通过代码理解gan网络&tensorflow共享变量机制_上 上篇是一个尝试生成minist手写体数据的简单GAN网络,之前有介绍过,图片维度是28*28*1,生成器的上采样使 ...

  8. sklearn 中模型保存的两种方法

    一. sklearn中提供了高效的模型持久化模块joblib,将模型保存至硬盘. from sklearn.externals import joblib #lr是一个LogisticRegressi ...

  9. 『TensorFlow』分类问题与两种交叉熵

    关于categorical cross entropy 和 binary cross entropy的比较,差异一般体现在不同的分类(二分类.多分类等)任务目标,可以参考文章keras中两种交叉熵损失 ...

随机推荐

  1. Filter过滤器与Session会话跟踪技术

    Filter过滤器 适用场景 1.为web应用程序的新功能建立模型(可被添加到web应用程序中或者从web应用程序中删除而不需要重写基层应用程序代码)2.用户授权Filter:负责检查用户请求,根据请 ...

  2. python之路----进程三

    IPC--PIPE管道 #创建管道的类: Pipe([duplex]):在进程之间创建一条管道,并返回元组(conn1,conn2),其中conn1,conn2表示管道两端的连接对象,强调一点:必须在 ...

  3. 20145213《网络对抗》逆向及Bof基础

    实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,getShe ...

  4. String & dp Problem Round 3 2017.4.22

    对每一个特征求前缀和,如果它减去前面的某一个地方的和,得到的每个特征是相等的,那么然后就可以更新答案. 需要解决这个两个问题 1.如何使答案尽量大? 这个很简单,直接找尽量靠前的地方就好了. 2,如何 ...

  5. myeclipse中文名字项目运行报错

    今天由于项目进行分支,负责开发迭代的功能对应不同的分支项目,没想到的是分支项目名称加上了功能的中文名字.要使用了resin发布项目的时候,报了 java.io.CharConversionExcept ...

  6. Python3基础 str casefold 返回全是小写字母的新字符串

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  7. 【配置、开发】Spark入门教程[2]

    本教程源于2016年3月出版书籍<Spark原理.机制及应用> ,在此以知识共享为初衷公开部分内容,如有兴趣,请支持正版书籍. Spark为使用者提供了大量的工具和脚本文件,使得其部署与开 ...

  8. 【附2】hystrix详述(2)- 配置

    一.hystrix在生产中的建议 1.保持timeout的默认值(1000ms),除非需要修改(其实通常会修改) 2.保持threadpool的的线程数为10个,除非需要更多 3.依赖标准的报警和监控 ...

  9. [Java中实现国际化] - 配合thymeleaf实现中英文自动切换(多语言)

    MOOC该链接第三章第二节 尚硅谷SpringBoot全集 web开发国际化 xjbo  (7天,过期可以留言索取) resources下建立文件 上到下为: 默认的,英语(美国),中文(中国) en ...

  10. 用python + hadoop streaming 编写分布式程序(一) -- 原理介绍,样例程序与本地调试

    相关随笔: Hadoop-1.0.4集群搭建笔记 用python + hadoop streaming 编写分布式程序(二) -- 在集群上运行与监控 用python + hadoop streami ...