机器学习现在成为了计算机领域的显学,但是大部头的专业书籍往往让人望而生畏,对于更多的人来说,需要的是对机器学习模型的应用,而不是从无到有建立模型。Scikit-Learn库刚好满足了大众的需求,这里以经典的“鸢尾花数据”演示贝叶斯模型的应用。

入门

pandas基础

由于需要使用pandas库进行数据文件的读写,这里先介绍需要用到的pandas语句:

#读取CSV文件到对象
Obj=pandas.read_csv('文件名')
#保存对象到CSV
Obj.to_csv('文件名')
#获取一列
Obj['列名']
#添加列(会改变对象)
Obj['新列名']=数组
#删除列(不会改变对象,会返回一个新对象)
newObj=Obj.drop(columns='species')

数据准备

首先要下载数据,在网址https://github.com/mwaskom/seaborn-data找到iris.csv并下载,当然在这个页面也可以找到其他类似的数据集进行训练。

第二步是将数据分成训练数据和测试数据,打乱行顺序,取表头和100行保存为训练集.csv,取表头和余下的50行保存为测试集.csv

引入库和模型

import pandas
from sklearn.naive_bayes import GaussianNB#引入模型

读取训练集,并分离数据和结果

train=pandas.read_csv('训练集.csv')
y=train['species']#结果数组
X=train.drop(columns='species')#参数矩阵
print(train,y,X)

拟合模型

model=GaussianNB()#实例化模型
model.fit(X,y)#拟合模型

验证测试集

test=pandas.read_csv('测试集.csv')
Xtest=test.drop(columns='species')ytest=model.predict(Xtest)#验证模型
test['result']=ytest
test.to_csv('分类结果.csv')

模型保存

训练后模型的保存和加载需要使用joblib工具

import joblib # 保存模型参数的工具# 保存模型
joblib.dump(model,'iris.model')
# 加载模型
model=joblib.load('iris.model')

完整代码

import pandas
from sklearn.naive_bayes import GaussianNB#引入模型train=pandas.read_csv('训练集.csv')
y=train['species']#结果数组
X=train.drop(columns='species')#参数矩阵
print(train,y,X)model=GaussianNB()#实例化模型
model.fit(X,y)#拟合模型test=pandas.read_csv('测试集.csv')
Xtest=test.drop(columns='species')ytest=model.predict(Xtest)
test['result']=ytest
test.to_csv('分类结果.csv')

手动打开分类结果.csv即可查看分类结果

上学习了贝叶斯方法的使用,下面再来应用另一种经典方法:K-聚类算法,与上一次的代码相比,需要改动的代码仅有两行,其中模型的参数代表聚类中心数量,亦即待区分的类别数量。

#引入模型
from sklearn.neighbors import KNeighborsClassifier
#实例化模型
model=KNeighborsClassifier(n_neighbors=3)

下面是完整代码

import pandas
from sklearn.neighbors import KNeighborsClassifiermodel=KNeighborsClassifier(n_neighbors=3)train=pandas.read_csv('训练集.csv')
y=train['species']#结果数组
X=train.drop(columns='species')#参数矩阵model.fit(X,y)test=pandas.read_csv('测试集.csv')
Xtest=test.drop(columns='species')ytest=model.predict(Xtest)
test['result2']=ytest
test.to_csv('分类结果2.csv')

对比两次实验结果发现,K-临近算法分类结果有1个错误,而朴素贝叶斯方法有2个错误。

学习了这些基本操作之后,可以举一反三,选用其他机器学习算法。

无监督分类

无监督分类的方法通常包含下面几个内置函数方法

方法 说明
fit(X[, y]) 使OrdinalEncoder拟合X。
fit_transform(X[, y]) 拟合数据,然后对其进行转换。
get_params([deep]) 获取此估计量的参数。
inverse_transform(X) 将数据转换回原始表示形式。
set_params(**params) 设置此估算器的参数。
transform(X) 将X转换为序数代码。

层次聚类

import pandas as pd
import numpy as npfrom sklearn.cluster import AgglomerativeClusteringdata=pd.read_csv('data.csv',sep='\t',index_col=0)ac=AgglomerativeClustering(n_clusters=5,affinity='euclidean',linkage='average')
labels = ac.fit_predict(data)data['lable']=labelsprint ('cluster labels:%s'%labels)

数据预处理

主成分分析

from sklearn.decomposition import PCA
pca=PCA(n_components=3)
newdata=pca.fit_transform(data)

数据归一化

#sklearn.preprocessing.normalize(X, norm='l2', *, axis=1, copy=True, return_norm=False)
from sklearn.preprocessing import normalize
newdata2=normalize(data,axis=0)

结果可视化

散点图

可以使用数据的参数作为图形坐标,用颜色或符号表示分类结果

import matplotlib.pyplot as plt
import seaborn as sns
plt.figure(figsize=(12, 12))
#plt.scatter(X.sepal_length,X.sepal_width,c=y_pred)
sns.scatterplot(X.sepal_length,X.sepal_width,hue=y_pred,style=y_pred)
plt.show()

机器学习Scikit-Learn基本操作实战相关推荐

  1. [转载]Scikit Learn: 在python中机器学习

    原址:http://my.oschina.net/u/175377/blog/84420 目录[-] Scikit Learn: 在python中机器学习 载入示例数据 一个改变数据集大小的示例:数码 ...

  2. 机器学习与Scikit Learn学习库

    摘要: 本文介绍机器学习相关的学习库Scikit Learn,包含其安装及具体识别手写体数字案例,适合机器学习初学者入门Scikit Learn. 在我科研的时候,机器学习(ML)是计算机科学领域中最 ...

  3. Scikit Learn: 在python中机器学习

    Warning 警告:有些没能理解的句子,我以自己的理解意译. 翻译自:Scikit Learn:Machine Learning in Python 作者: Fabian Pedregosa, Ga ...

  4. 秒懂机器学习---k-近邻算法实战

    秒懂机器学习---k-近邻算法实战 一.总结 一句话总结: k临近算法的核心就是:将训练数据映射成k维空间中的点 1.k临近算法怎么解决实际问题? 构建多维空间:每个特征是一维,合起来组成了一个多维空 ...

  5. 【白话机器学习】算法理论+实战之PageRank算法

    1. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,常见的机器学习算法: 监督学习算法:逻辑回归,线性回归,决策树,朴素贝叶斯,K近邻,支持向量机,集成算法Ad ...

  6. 【scikit-learn】如何用Python和SciKit Learn 0.18实现神经网络

    本教程的代码和数据来自于 Springboard 的博客教程.本文的作者为 Jose Portilla,他是网络教育平台 Udemy 一门数据科学类课程的讲师. GitHub 链接:https://g ...

  7. python scikit learn 关闭开源_scikit learn 里没有神经网络?

    本教程的代码和数据来自于 Springboard 的博客教程,希望能为你提供帮助.作者为 Jose Portilla,他是网络教育平台 Udemy 一门数据科学类课程的讲师. GitHub 链接:ht ...

  8. scikit - learn 做文本分类

    文章来源: https://my.oschina.net/u/175377/blog/84420 Scikit Learn: 在python中机器学习 Warning 警告:有些没能理解的句子,我以自 ...

  9. PyTorch机器学习从入门到实战

    人工智能入门实践, 轻松玩转PyTorch框架. 校宝在线出品的书籍<PyTorch机器学习从入门到实战>发售了! 购书链接: 内容简介 近年来,基于深度学习的人工智能掀起了一股学习的热潮 ...

  10. 【白话机器学习】算法理论+实战之LightGBM算法

    1. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,在这简单的先捋一捋, 常见的机器学习算法: 监督学习算法:逻辑回归,线性回归,决策树,朴素贝叶斯,K近邻,支 ...

最新文章

  1. 我的服务器有硬件防火墙,而且只开了80端口,是不会有网络安全问题的
  2. WebSphere安装
  3. Linux进程-进程的创建
  4. 手持机连不上信道设置为13的AP
  5. 全栈、均栈、MERN栈,哪个才是下一代Web项目的正确栈
  6. Vs Code如何自定义设置一键代码补全
  7. python 自动输入用户密码_Linux中Python自动输入sudo 密码
  8. 【计算机科学基础】计算理论初步
  9. JavaScript 表单专题
  10. 组件:slot插槽、组件:组合slot
  11. 图像特效之浮雕与雕刻
  12. 小白的java学习之路 “ 选择结构(一)”
  13. latex max下面标注怎么写
  14. matlab在机器视觉的应用实例,十个基于机器视觉的实用案例介绍
  15. 通过eclipse对apk加密混淆的方法
  16. siamfc代码解读_分析SiamFC
  17. 高级电工电拖实训考核装置
  18. ISSCC 2017论文导读 Session 14 Deep Learning Processors,A 2.9TOPS/W Deep Convolutional Neural Network
  19. 2020年8月4日王者服务器维修,2020年8月4日小鸡正确的答案
  20. 双系统安装deepin20_win10+deepin双系统安装方法(UEFI+GPT)

热门文章

  1. vue-cli 没有build如何配置_如何从零开发一个 gradle 插件(一)
  2. 云鹊医怎么快速认证_兴趣认证怎么申请?掌握这9个小技巧,快速通过
  3. java安卓开发异步任务_java – 如何从android中的任何异步操作中获...
  4. java 浏览文件_Java浏览文件对话框
  5. c语言引用与指针有什么区别,Java引用与C语言指针的区别
  6. 深入理解JVM虚拟机(5)——JVM虚拟机类加载机制概述
  7. 全国青少年软件编程(C语言)等级考试试题-2019年9月(一级含答案)
  8. dede在发布文章时自动加上关键词链接
  9. 视觉SLAM十四讲_3-李群和李代数
  10. LeetCode之移除元素