Kaggle实战之sklearn学习

原创 2018年04月17日 21:49:38

今天刚刚接触python机器学习之kaggle实战这本书,初步学习了python机器学习库之sklearn的基本运用,照葫芦画瓢的对书中代码进行了一定的编写运行,小小记录我学机器学习之路
主要是这对支持向量机 、朴素贝叶斯、k近邻、决策树 ,使用sklearn快速对其进行建模训练操作

一 支持向量机

这里不涉及具体的算法原理知识,主要是使用sklearn库函数进行构建训练网络

#使用sklearn中的手写数字识别数据集来进行操作
from sklearn.datasets import load_digits
digits = load_digits()# 加载数据集

digits数据集详细描述
我们可以看出,DESCR为手写数字数据集的详细描述,包含数据的大小,标签,类型等等诸多信息;data shape为(1797,64)意为共有1797张8*8的数字图片矩阵,存储时通常将其变为1d向量,虽然会损失一些2d图像方面的数据信息;同理images类似;target为对应手写数字数据矩阵的标签;target_names为所有的标签种类。

"""手写数据 分割"""
from sklearn.cross_validation 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)

上面中,digits.data,digits.target很好理解,test_size为设置的切割比例,train_data 占75%,test_data 占 25%。

#数据预处理,标准化数据 
from sklearn.preprocessing import StandardScaler
from sklearn.svm import LinearSVC # 基于线性假设的支持向量机分类器 LinearSVC
ss = StandardScaler() # 初始化 标准化函数
X_train = ss.fit_transform(X_train)
X_test = ss.fit_transform(X_test)

#初始化线性假设的支持向量机分类器 LinearSVC 
lsvc = LinearSVC()

#训练 
lsvc.fit(X_train,y_train)

#利用训练好的模型对测试样本的数字类别进行预测,预测结果存储在变量y_predict中 
y_predict = lsvc.predict(X_test)

#使用模型自带的评估函数进行准确性测评 
accuracy = lsvc.score(X_test,y_test)
print('Accuracy of LinearSVC is :',accuracy)

#使用sklearn。metric里面的classification_report模块对预测结果做更加详细的分析
from sklearn.metrics import classification_report
print(classification_report(y_test,y_predict,target_names=digits.target_names.astype(str)))

这里写图片描述

同理下面就不在一个个叙述

二 朴素贝叶斯

"""朴素贝叶斯文本分类"""
#news 数据下载 
from sklearn.datasets import fetch_20newsgroups
news = fetch_20newsgroups(subset='all')

#手写数据 分割 
from sklearn.cross_validation 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)

#从 sklearn.naive_bayes导入朴素贝叶斯模型 
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
accuracy = mnb.score(X_test,y_test)
print('Accuracy of Naive_Bayes Classifier is :',accuracy)
print(classification_report(y_test,y_predict,target_names=news.target_names))

这里写图片描述

三 k近邻

from sklearn.datasets import load_iris   #  加载数据集
from sklearn.preprocessing import StandardScaler   # 数据预处理之 标准化
from sklearn.cross_validation import train_test_split  #切割数据
from sklearn.neighbors import KNeighborsClassifier  #  导入k近邻分类器,还有k近邻回归
from sklearn.metrics import classification_report  #  分类器性能指标
#加载花数据
iris = load_iris()
X_train,X_test,y_train,y_test = train_test_split(iris.data,iris.target,test_size=0.25,random_state=33)
#标准化数据
ss = StandardScaler()
X_train = ss.fit_transform(X_train)
X_test = ss.fit_transform(X_test)
#分类器初始化
knc =  KNeighborsClassifier()
knc.fit(X_train,y_train)
y_predict = knc.predict(X_test)
#打印结果
accuracy = knc.score(X_test,y_test)
print('Accuracy of K-nearest Neighbor Classifier is :',accuracy)
print(classification_report(y_test,y_predict,target_names=iris.target_names))

这里写图片描述

四 决策树

泰塔尼克数据

import pandas as pd # pandas大法
from sklearn.datasets import load_iris   #  加载数据集
from sklearn.preprocessing import StandardScaler   # 数据预处理之 标准化
from sklearn.cross_validation import train_test_split  #切割数据
from sklearn.tree import DecisionTreeClassifier  #  导入决策树分类器,还有k近邻回归
from sklearn.metrics import classification_report  #  分类器性能指标
from sklearn.feature_extraction import DictVectorizer  #  特征转换器
# 加载数据
titanic = pd.read_csv('http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt')
# 提取其中三种特征及标签
X = titanic[['pclass','age','sex']]
y = titanic['survived']
# 数据清洗,补充数据
X['age'].fillna(X['age'].mean(),inplace=True)
# 数据切割
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.25,random_state=33)
# 对训练数据和测试数据进行特征转换
vec = DictVectorizer(sparse=False)
X_train = vec.fit_transform(X_train.to_dict(orient='record'))
X_test = vec.fit_transform(X_test.to_dict(orient='record'))
# 初始化 决策树分类器
dtc = DecisionTreeClassifier()
# 训练
dtc.fit(X_train,y_train)
# 预测
y_predict = dtc.predict(X_test)
# 准确度
accuracy = dtc.score(X_test,y_test)
print(accuracy)
# 打印更加详细的分类性能
print(classification_report(y_test,y_predict,target_names=['died','survived']))

这里写图片描述

四 机器学习

"""集成学习"""
# 集成模型
import pandas as pd
from sklearn.datasets import load_iris   #  加载数据集
from sklearn.preprocessing import StandardScaler   # 数据预处理之 标准化
from sklearn.cross_validation import train_test_split  #切割数据
from sklearn.tree import DecisionTreeClassifier  #  导入决策树分类器,还有k近邻回归
from sklearn.metrics import classification_report  #  分类器性能指标
from sklearn.feature_extraction import DictVectorizer  #  特征转换器
titanic = pd.read_csv('http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt')

X = titanic[['pclass','age','sex']]
y = titanic['survived']

X['age'].fillna(X['age'].mean(),inplace=True)

X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.25,random_state=33)
vec = DictVectorizer(sparse=False)
X_train = vec.fit_transform(X_train.to_dict(orient='record'))
X_test = vec.fit_transform(X_test.to_dict(orient='record'))
# 使用单一决策树进行模型训练以及预测分析
dtc = DecisionTreeClassifier()
dtc.fit(X_train,y_train)
dtc_y_predict = dtc.predict(X_test)

accuracy = dtc.score(X_test,y_test)
print('Accuracy of DecisionTreeClassifier is :',accuracy)

# 使用随机森林分类器进行集成模型的训练以及预测分析
from sklearn.ensemble import RandomForestClassifier
rfc = RandomForestClassifier()
rfc.fit(X_train,y_train)
rfc_y_pred = rfc.predict(X_test)

accuracy = rfc.score(X_test,y_test)
print('Accuracy of RandomForestClassifier is :',accuracy)

# 使用梯度提升决策树进行集成模型的训练以及预测分析
from sklearn.ensemble import GradientBoostingClassifier
gbc = GradientBoostingClassifier()
gbc.fit(X_train,y_train)
gbc_y_pred = gbc.predict(X_test)

accuracy = gbc.score(X_test,y_test)
print('Accuracy of GradientBoostingClassifier is :',accuracy)

这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/silencehhh/article/details/79980571

Python机器学习实战与kaggle实战

https://mlnote.wordpress.com/2015/12/16/python%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E5%AE%9E%E8%B7%B5...
  • wuxiaosi808
  • wuxiaosi808
  • 2017-09-16 18:55:00
  • 613

Kaggle 实战深度学习系列资料

 学习这门课程的方法和建议:多看几遍视频,建议每周花 10 小时;用好 wiki 和 notebook;遇到问题先自己试着解决,善于运用 forum 查找答案和提问。 ...
  • u010138055
  • u010138055
  • 2017-05-12 16:12:26
  • 713

机器学习导论-KaggleTitanic视频及教程

基本概念 对历史数据的计算,对未来还没发生的事情进行预测 训练集:训练模型 测试集:测试模型 验证集:选择参数 建立模型时怎么知道模型的好坏:评估标准 核心:优化误差函数/代价函数J(theta)...
  • CherDW
  • CherDW
  • 2016-12-20 20:58:00
  • 955

NLP系列(4)_朴素贝叶斯实战与进阶

本文为朴素贝叶斯的实践和进阶篇,先丢了点干货,总结了贝叶斯方法的优缺点,应用场景,注意点和一般建模方法。紧接着对它最常见的应用场景,抓了几个例子,又来了一遍手把手系列,不管是对于文本主题分类、多分类问...
  • yaoqiang2011
  • yaoqiang2011
  • 2016-02-03 15:07:54
  • 35177

通过一个kaggle实例学习解决机器学习问题

之前写过一篇 一个框架解决几乎所有机器学习问题 但是没有具体的例子和代码,今天看到一个不错的 kaggle 上的 code Exploratory Tutorial - Titanic 来解析一下,源...
  • aliceyangxi1987
  • aliceyangxi1987
  • 2017-05-02 11:29:12
  • 4759

Kaggle 神器:XGBoost 从基础到实战

主讲老师冒老师为计算机博士,现在中科院从事科研教学工作,十余年机器学习教学经验,主持国家级科研项目3项,研究方向为机器学习、计算机视觉及多媒体处理。 XGBoost是"极端梯度提升"(eXtreme Gradient Boosting)的简称。XGBoost源于梯度提升框架,但是能并行计算、近似建树、对稀疏数据的有效处理以及内存使用优化,这使得XGBoost至少比现有梯度提升实现有至少10倍的速度提升。XGBoost可以处理回归、分类和排序等多种任务。由于它在预测性能上的强大且训练速度快,XGBoost已屡屡斩获Kaggle各大竞赛的冠军宝座。
  • 2017年06月20日 17:06

kaggle 入门 Bike sharing Demand prediction

根据天气等因素对自行车租赁数量进行预测 利用xgboost进行预测 import csv from math import log, exp import numpy __author__ =...
  • onepiecehuiyu
  • onepiecehuiyu
  • 2016-05-27 20:10:11
  • 1509

kaggle 案例实战 七月 july 算法

淘宝二手平台--闲鱼链接(或者直接在淘宝二手平台--闲鱼上搜索kaggle,或者加微信:hellojasper91): https://2.taobao.com/item.htm?spm=2007.1...
  • MachineLearning90
  • MachineLearning90
  • 2017-01-03 15:22:11
  • 1418

kaggle的手写识别比赛(python sklearn-KNN)

如果你想知道怎么玩一下kaggle?那这篇文章就非常适合你了。 Kaggle练手项目:https://www.kaggle.com/c/digit-recognizer 0~9的手写体识别。 项...
  • l18930738887
  • l18930738887
  • 2016-02-28 23:46:33
  • 2218

kaggle Code :树叶分类 sklearn分类器应用

Which Classifier is Should I Choose? This is one of the most import questions to ask when approachi...
  • u010016927
  • u010016927
  • 2017-07-20 23:25:06
  • 360
收藏助手
不良信息举报
您举报文章:Kaggle实战之sklearn学习
举报原因:
原因补充:

(最多只允许输入30个字)