标准机器学习的开发编程流程

关注公众号“轻松学编程”了解更多。

一、流程

标准机器学习的开发编程流程:

1、获取数据(爬虫、数据加载、业务部门获取)

2、数据建模(摘选样本数据(特征、目标))

3、数据清洗(异常值检测和过滤)

4、特征工程(归一化处理:提高算法模型的精度)

​ 归一化目的:使得每种特征数据的量级(权重)保持大致一致

​ 归一化方法(常用):1.普通归一化处理 2. 区归一化 处理 3.使用函数

5、模型选择(分类、回归)

6、模型评估(打分,分类边界图,残差直方图)

7、算法调优(调整模型对象的参数值)

8、绘图

注意:以下命令都是在浏览器中输入。
cmd命令窗口输入:jupyter notebook
打开浏览器输入网址http://localhost:8888/

二、预测年收入是否大于50K美元

需求:读取adult.txt文件,最后一列是年收入,并使用KNN算法训练模型,然后使用模型预测一个人的年收入是否大于50 。

说明:获取年龄、教育程度、职位、每周工作时间作为机器学习数据 获取薪水作为对应结果 。

1、导包

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt from pandas import DataFrame,Series #创建K-近邻算法模型
from sklearn.neighbors import KNeighborsClassifier
#对模型进行评分
from sklearn.model_selection import train_test_split #内嵌画图
%matplotlib inline

2、获取数据

data=pd.read_csv(r'./adults.txt')

3、数据建模

3.1 摘取特征数据

features=data[['age','education_num','occupation',
'hours_per_week']]
features.head()

由于特征数据中有字符串型数据,需要转换成实质性数据才能参与运算。

3.1.1 数据转换

将职业中的String类型数据转换为Number。

思路:

  • 获取职业种类n,然后根据创建一个n行n列的对角矩阵;
  • 对职业列表中的每一种职业进行映射,得到一个n列的一维数组;
  • 把职业这一列拆分成n列;
  • 把特征数据的所有列转换成m列1行的二维数组
  • 把二维数组合并形成新的特征数据(模型运算时需要的是二维数组)
#获取特征数据中职业有几种
unique=features['occupation'].unique()
occ_size=unique.size
# 把df中的某一列字符串转成对角矩阵
dm=np.eye(occ_size)
def str2Num(occ):
global dm
#获取当前职业在数组unique中的下标
index=np.argwhere(occ==unique)[0][0]
return dm[index] #对职业进行映射
features['occupation']=features.occupation.map(str2Num)
features.head()

#features['occupation'].unique().size的值为15
# occupation现在是一个1行15列的一维数组,把occupation分拆成15列,
#然后把每一列级联
occ1=features['occupation'][0]
for item in features['occupation'][1:]:
occ1=np.concatenate((occ1,item))
#转成二维数组
occupation=occ1.reshape(-1,15)
ages=features['age'].reshape(-1,1)
education_nums=features['education_num'].reshape(-1,1)
hours_per_week=features['hours_per_week'].reshape(-1,1)
#把每一列级联
new_features=np.hstack((occupation,h_age_edu,hours_per_week))
new_features

3.2 摘取目标数据

target=data['salary']
target.head()

4、模型选择

选择分类模型来训练。

#random_state=1 : 固定随机状态种子
x_train,x_test,y_train,y_test=train_test_split(new_features,
target,
test_size=0.2,
random_state=1)

训练模型

#k先取值为5,可根据后面评分高低调优
knn=KNeighborsClassifier(n_neighbors=5)
#训练模型
knn.fit(x_train,y_train)

5、模型评分

#评分
knn.score(x_test,y_test)

6、算法调优(调整模型对象的参数值)

knn=KNeighborsClassifier(n_neighbors=20)
#训练模型
knn.fit(x_train,y_train)
#重新评分
knn.score(x_test,y_test)

7、预测

knn.predict(x_test)

后记

【后记】为了让大家能够轻松学编程,我创建了一个公众号【轻松学编程】,里面有让你快速学会编程的文章,当然也有一些干货提高你的编程水平,也有一些编程项目适合做一些课程设计等课题。

也可加我微信【1257309054】,拉你进群,大家一起交流学习。
如果文章对您有帮助,请我喝杯咖啡吧!

公众号

关注我,我们一起成长~~

python机器学习的开发流程的更多相关文章

  1. python 完整项目开发流程

    1. 安装 python    2. 安装virtualenvwrapper    3. 虚拟环境相关操作    4. 进入虚拟环境, 安装django    5. 安装编辑器    6. 安装mys ...

  2. 五款实用免费的Python机器学习集成开发环境(5 free Python IDE for Machine Learning)(图文详解)

    前言 集成开发环境(IDE)是提供给程序员和开发者的一种基本应用,用来编写和测试软件.一般而言,IDE 由一个编辑器,一个编译器(或称之为解释器),和一个调试器组成,通常能够通过 GUI(图形界面)来 ...

  3. python全栈开发-Day2 布尔、流程控制、循环

    python全栈开发-Day2 布尔 流程控制 循环   一.布尔 1.概述 #布尔值,一个True一个False #计算机俗称电脑,即我们编写程序让计算机运行时,应该是让计算机无限接近人脑,或者说人 ...

  4. python 面向对象终极进阶之开发流程

    好了,你现在会了面向对象的各种语法了,  但是你会发现很多同学都是学会了面向对象的语法,却依然写不出面向对象的程序,原因是什么呢?原因就是因为你还没掌握一门面向对象设计利器, 此刻有经验的人可能会想到 ...

  5. 《python机器学习—预测分析核心算法》:构建预测模型的一般流程

    参见原书1.5节 构建预测模型的一般流程 问题的日常语言表述->问题的数学语言重述重述问题.提取特征.训练算法.评估算法 熟悉不同算法的输入数据结构:1.提取或组合预测所需的特征2.设定训练目标 ...

  6. Python各个岗位的开发流程

     根据张大美女提供资料微修改,在这谢谢张大美女! 1.python软件开发工程师 1.1 项目启动会 说明项目目标.阶段划分.组织结构.管理流程等关键事项. 1.2 需求调研 由用户提出,描述产品的功 ...

  7. Python基础之模块:7、项目开发流程和项目需求分析及软件开发目录

    一.项目开发流程 1.项目需求分析 明确项目具体功能: 明确到底要写什么东西,实现什么功能,在这个阶段的具体要询问项目经理和客户的需求 参与人员: 产品经理.架构师.开发经理 技术人员主要职责: 引导 ...

  8. python开发流程及项目目录规范

    # 项目开发流程 1.调研 2.需求分析   ---产品经理 3.任务分配   ---项目经理 4.写项目demo   ---项目经理.架构师.程序猿 5.架构分析   ---项目经理.架构师 6.编 ...

  9. 2016年GitHub排名前20的Python机器学习开源项目(转)

    当今时代,开源是创新和技术快速发展的核心.本文来自 KDnuggets 的年度盘点,介绍了 2016 年排名前 20 的 Python 机器学习开源项目,在介绍的同时也会做一些有趣的分析以及谈一谈它们 ...

随机推荐

  1. springmvc 源码分析(一)-- DisparcherServlet的创建和注册到tomcat

    一. servlet 3.0 的使用 1.1 环境搭建: servlet跟spring没有任何关系,我创建一个servlet可以不依赖spring,现在搭建一个纯的servlet项目,并实现简单的类似 ...

  2. Go-err is shadowed during return

    where? Go程序函数中在通过 return关键字返回的时候,报错 why? 变量作用域的问题,在子作用域定义一个上层作用域的同名的变量 package main import ( "e ...

  3. day63:Linux:nginx基础知识&nginx基础模块

    目录 1.nginx基础知识 1.1 什么是nginx 1.2 nginx应用场景 1.3 nginx组成结构 1.4 nginx安装部署 1.5 nginx目录结构 1.6 nginx配置文件 1. ...

  4. .NET Standard 系列

    .NET Standard 是一套正式的 .NET API 规范,有望在所有 .NET 实现中推出. 推出 .NET Standard 的背后动机是要提高 .NET 生态系统中的一致性. ECMA 3 ...

  5. Code Forces 1030E

    题目大意: 给你n个数,你可以交换一个数的任意二进制位,问你可以选出多少区间经过操作后异或和是0. 思路分析: 根据题目,很容易知道,对于每个数,我们可以无视它的1在那些位置,只要关注它有几个1即可, ...

  6. CDH5部署三部曲之一:准备工作

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  7. 本溪6397.7539(薇)xiaojie:本溪哪里有xiaomei

    本溪哪里有小姐服务大保健[微信:6397.7539倩儿小妹[本溪叫小姐服务√o服务微信:6397.7539倩儿小妹[本溪叫小姐服务][十微信:6397.7539倩儿小妹][本溪叫小姐包夜服务][十微信 ...

  8. 制作西北地区地图数据并maskout

    1.从全国地图数据中选中西北5省:打开bou2_4p.shp文件添加相应的图层(中国各省的行政区域),选中工具栏中的"通过矩形选择要素"工具,用鼠标点击选择要输出的图元,按住ctr ...

  9. 习题3-2 分子量(Molar Mass, ACM/ICPC Seoul 2007, UVa1586)

    #include<stdio.h> #include<string.h> #include<ctype.h> double getweight(char x) { ...

  10. Ubuntu搜狗输入法安装

    一.下载sogoupinyin_2.2.0.0108_amd64.deb 二.拷贝到服务器并安装 sudo dpkg -i sogoupinyin_2.2.0.0108_amd64.deb 三.设置搜 ...