这个博客是基于github上项目,Avik Jain致力于通过这个项目,让机器学习入门者学习机器学习的理论与实战,话不多说,现在开始:
https://github.com/Avik-Jain/100-Days-Of-ML-Code

注意:
1、pandas包生成的DF使用切片方式不同于python中的切片([:],包左不包右),DF.loc[0:3] 一共是四行
2、pandas中的df.concat()方法参数axis=0 和 axis=1,相当于sql中的union和join,他和fd.merge的区别
https://codeday.me/bug/20180824/225799.html
https://www.jb51.net/article/134615.htm pandas函数
pd.merge(df1, df2, on=‘col1’,
how=‘inner’,sort=True) 合并两个DataFrame,按照共有的某列做内连接(交集),outter为外连接(并集),结果排序
pd.merge(df1, df2, left_on=‘col1’,
right_on=‘col2’) df1 df2没有公共列名,所以合并需指定两边的参考列
pd.concat([sr1, sr2, sr3,…], axis=0) 多个Series堆叠成多行,结果仍然是一个Series
pd.concat([sr1, sr2, sr3,…], axis=1) 多个Series组合成多行多列,结果是一个DataFrame,索引取并集,没有交集的位置填入缺省值NaN
3、
一、导包
import nu

二、
准备数据:
Country,Age,Salary,Purchased
France,44,72000,No
Spain,27,48000,Yes
Germany,30,54000,No
Spain,38,61000,No
Germany,40,Yes
France,35,58000,Yes
Spain,52000,No
France,48,79000,Yes
Germany,50,83000,No
France,37,67000,Yes

Jupyter Notebook
ML100Day_1
最后检查: 8 分钟前
(自动保存)
Current Kernel Logo
Python 3
File
Edit
View
Insert
Cell
Kernel
Widgets
Help
实际代码:
import numpy as np
import pandas as pd
df = pd.read_csv(‘C:\Users\Administrator\Desktop\ml 100day\MLDayOneData.csv’)
print(df)
Country Age Salary Purchased
0 France 44.0 72000.0 No
1 Spain 27.0 48000.0 Yes
2 Germany 30.0 54000.0 No
3 Spain 38.0 61000.0 No
4 Germany 40.0 NaN Yes
5 France 35.0 58000.0 Yes
6 Spain NaN 52000.0 No
7 France 48.0 79000.0 Yes
8 Germany 50.0 83000.0 No
9 France 37.0 67000.0 Yes
#从qdf中取出x和y,并将他们转换成ndarray
x = df.iloc[ : ,:-1].values
print(type(df.iloc[ : ,3]))
print(type(x))
y = df.iloc[:,3].values
<class ‘pandas.core.series.Series’>
<class ‘numpy.ndarray’>
#处理空值
#首先创建异常值处理器对象
from sklearn.preprocessing import Imputer
imp = Imputer(missing_values = “NaN”,strategy = “mean”,axis = 0)
print(x)
[[‘France’ 44.0 72000.0]
[‘Spain’ 27.0 48000.0]
[‘Germany’ 30.0 54000.0]
[‘Spain’ 38.0 61000.0]
[‘Germany’ 40.0 nan]
[‘France’ 35.0 58000.0]
[‘Spain’ nan 52000.0]
[‘France’ 48.0 79000.0]
[‘Germany’ 50.0 83000.0]
[‘France’ 37.0 67000.0]]
C:\Users\Administrator\AppData\Roaming\Python\Python37\site-packages\sklearn\utils\deprecation.py:58: DeprecationWarning: Class Imputer is deprecated; Imputer was deprecated in version 0.20 and will be removed in 0.22. Import impute.SimpleImputer from sklearn instead.
warnings.warn(msg, category=DeprecationWarning)
#将有异常值的列进行处理(所有行,所有特征x)
imp = imp.fit(x[ : ,1:3])
print(imp)
print(type(imp))
Imputer(axis=0, copy=True, missing_values=‘NaN’, strategy=‘mean’, verbose=0)
<class ‘sklearn.preprocessing.imputation.Imputer’>
x[ : , 1:3] = imp.transform(x[ : ,1:3])
print(x)
[[‘France’ 44.0 72000.0]
[‘Spain’ 27.0 48000.0]
[‘Germany’ 30.0 54000.0]
[‘Spain’ 38.0 61000.0]
[‘Germany’ 40.0 63777.77777777778]
[‘France’ 35.0 58000.0]
[‘Spain’ 38.77777777777778 52000.0]
[‘France’ 48.0 79000.0]
[‘Germany’ 50.0 83000.0]
[‘France’ 37.0 67000.0]]
#比如处理y值,y值可能是好坏,矩阵中需要数值型,我们通过encode categorical data,将y转换成y值
from sklearn.preprocessing import LabelEncoder,OneHotEncoder
#创建标签编码器对象
le_x = LabelEncoder()
print(x[ : , 0])

[‘France’ ‘Spain’ ‘Germany’ ‘Spain’ ‘Germany’ ‘France’ ‘Spain’ ‘France’
‘Germany’ ‘France’]
x[ : , 0] = le_x.fit_transform(x[ : , 0])
#fit_transform是fit和transform的简写,fit的作用简单来说,就是求得训练集X的均值,方差,最大值,最小值,这些训练集X固有的属性
#transform的简写是利用这些fit出来的结果进行转换
print(x[ : , 0])

[0 2 1 2 1 0 2 0 1 0]
print(x)
[[0 44.0 72000.0]
[2 27.0 48000.0]
[1 30.0 54000.0]
[2 38.0 61000.0]
[1 40.0 63777.77777777778]
[0 35.0 58000.0]
[2 38.77777777777778 52000.0]
[0 48.0 79000.0]
[1 50.0 83000.0]
[0 37.0 67000.0]]
#现在将变量转成了数字类型,现在就要使用虚拟变量哑变量(Dummy variable)将数据归一化,

https://www.cnblogs.com/king-lps/p/7846414.html

拿到获取的原始特征,必须对每一特征分别进行归一化,比如,特征A的取值范围是[-1000,1000],特征B的取值范围是[-1,1].如果使用logistic回归,w1x1+w2x2,因为x1的取值太大了,所以x2基本起不了作用。所以,必须进行特征的归一化,每个特征都单独进行归一化。

对于连续性特征:

Rescale bounded continuous features: All continuous input that are bounded, rescale them to [-1, 1] through x = (2x - max - min)/(max - min). 线性放缩到[-1,1]

Standardize all continuous features: All continuous input should be standardized and by this I mean, for every continuous feature, compute its mean (u) and standard deviation (s) and do x = (x - u)/s. 放缩到均值为0,方差为1

对于离散性特征:

Binarize categorical/discrete features: 对于离散的特征基本就是按照one-hot(独热)编码,该离散特征有多少取值,就用多少维来表示该特征。


##独热变量的优缺点:优点:one-hot变量解决了分类器不好处理属性数据的问题,她在一定程度上起到了 扩充特征 的作用,他的值只有0和1,不同类型存储在垂直的空间
#缺点:当类别很多时,特征空间会变得特别大,这种情况下,一般可以用 PCA 来减少维度。而且 one-hot encoding+PCA 这种组合在实际中也非常有用

#什么情况下用(不用)独热编码?
#用 独热编码用来解决类别型数据的离散值问题
#不用: 将离散型特征进行one-hot编码的作用,是为了让距离计算更合理,但如果特征是离散的,并且不用one-hot编码就可以很合理的计算出距离,那么就没必要进行one-hot编码。 有些基于树的算法在处理变量时,并不是基于向量空间度量,数值只是个类别符号,即没有偏序关系,所以不用进行独热编码。 Tree Model不太需要one-hot编码: 对于决策树来说,one-hot的本质是增加树的深度。

什么情况下(不)需要归一化? 需要:基于参数模型或者基于距离的模型,都是需要进行特征的归一化

不需要:基于树的方法是不许用进行特征的归一化的,例如随机森林、bagging、BOOSTING等

#哑变量与One-hot编码的区别在于:哑变量将定性特征转化为n-1个特征,而One-hot则是转化为n个特征。意思就是哑变量在编码时会去除第一个状态,而One-hot则对所有的状态都会进行编码。
#创建独热编码器对象
oneHotEncode= OneHotEncoder(categorical_features = [0])
print(oneHotEncode)
OneHotEncoder(categorical_features=[0], categories=None,
dtype=<class ‘numpy.float64’>, handle_unknown=‘error’,
n_values=None, sparse=True)
x = oneHotEncode.fit_transform(x).toarray()

print(type(x))
<class ‘numpy.ndarray’>
x
array([[1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 4.40000000e+01,
7.20000000e+04],
[0.00000000e+00, 0.00000000e+00, 1.00000000e+00, 2.70000000e+01,
4.80000000e+04],
[0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 3.00000000e+01,
5.40000000e+04],
[0.00000000e+00, 0.00000000e+00, 1.00000000e+00, 3.80000000e+01,
6.10000000e+04],
[0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 4.00000000e+01,
6.37777778e+04],
[1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 3.50000000e+01,
5.80000000e+04],
[0.00000000e+00, 0.00000000e+00, 1.00000000e+00, 3.87777778e+01,
5.20000000e+04],
[1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 4.80000000e+01,
7.90000000e+04],
[0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 5.00000000e+01,
8.30000000e+04],
[1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 3.70000000e+01,
6.70000000e+04]])

100-Days-Of-ML oneday相关推荐

  1. 火爆GitHub的《机器学习100天》,有人把它翻译成了中文版

    作者 | 红色石头 转载自AI有道(ID:redstonewill) 今天给大家介绍一个在 GitHub 上非常火的机器学习实战项目,叫做 100-Days-Of-ML-Code,中文名为<机器 ...

  2. GitHub热门教程:100天搞定机器学习(中文版)

    来源:Python开发者 本文多干货,建议收藏. 中文版持续放送中!大家快跟上呀! 100 Days Of ML Code (机器学习 100 天英文版)刚出来时,我们推荐过.目前英文版已经快 20k ...

  3. 火爆 GitHub 的《机器学习 100 天》,有人把它翻译成了中文版!

    今天给大家介绍一个在 GitHub 上非常火的机器学习实战项目,叫做 100-Days-Of-ML-Code,中文名为<机器学习 100 天>.目前该项目已经收获了 1.7w stars ...

  4. opencv机器学习ml模块简介

    本文不涉原理,只介绍如何使用! ml模块为opencv的机器学习(machine learning,ml)代码库,包含各种机器学习算法: 0, class CvStatModel ; class Cv ...

  5. 机器学习6/100天-Logistic实践

    Day 6 Logistic实践 github: 100 Days Of ML Code 导入库 import numpy as np import matplotlib.pyplot as plt ...

  6. GitHub 热门项目:机器学习编程 100 天

    (点击上方公号,快速关注我们) 整理:Python开发者(id:PythonCoder) 推荐一个 GitHub 热门项目:100 Days of ML Coding  | 机器学习编程 100 天 ...

  7. Open3D面向机器学习的扩展库

    点击"蓝字"关注点云PCL,选择"星标"获取最新文章 Open3D-ML是Open3D的一个扩展,用于3D机器学习任务.它建立在Open3D核心库之上,并通过机 ...

  8. OpenCV3.3中逻辑回归(Logistic Regression)使用举例

    OpenCV3.3中给出了逻辑回归(logistic regression)的实现,即cv::ml::LogisticRegression类,类的声明在include/opencv2/ml.hpp文件 ...

  9. O - Layout POJ - 3169(差分约束)

    O - Layout POJ - 3169 参考 思路: 限制条件 : 最大距离不超过w d[v] - d[u] <= w; 最小距离超过w d[v] - d[u] >= w; 移项得 d ...

  10. MPB:林科院袁志林组-​杨树根系-真菌互作体系构建方法

    为进一步提高<微生物组实验手册>稿件质量,本项目新增大众评审环节.文章在通过同行评审后,采用公众号推送方式分享全文,任何人均可在线提交修改意见.公众号格式显示略有问题,建议电脑端点击文末阅 ...

最新文章

  1. Unable to inject views for BcFragment{8d4c0 #1 id=0x7f0d00a1}
  2. 剑指offer_第16题_合并两个排序的链表_Python
  3. (0050)iOS开发之钥匙串存储
  4. 《学习之道》第九章不要突击工作
  5. 《代码整洁之道 Clean Architecture》-读书笔记
  6. Q8 凯立德 J07 升级方法
  7. 金蝶kis专业版系统登录服务器,金蝶kis专业版怎么远程连接服务器
  8. 百度在首页输出console发布招聘信息
  9. 网站流量统计分析工具,谷歌seo网站流量统计分析工具推荐
  10. r5-5600H这颗芯片能满足日常的编程学习吗
  11. 8招教你将内容营销与SEO完美合一
  12. 金融民工python学习笔记
  13. spi转串口 linux驱动,RT_Thread WK2124 SPI转串口芯片驱动软件包
  14. 智能交通系统计算机技术应用,计算机技术在智能交通系统中的应用.docx
  15. [LayoutConstraints] Unable to simultaneously satisfy constraints.
  16. 使用CSS3制作小黄人动画
  17. struts2技术内幕读书笔记1
  18. 了解CSS盒模型、页面布局在UI设计中的作用
  19. (五)flax Engine 游戏引擎——载具
  20. DataSphere Studio数据应用开发管理集成框架【DSS基础】

热门文章

  1. 如何将WMA文件转换为MP3
  2. linux 32位中文版,Linux_Deepin_2014下载|Linux Deepin 2014.3 官方简体中文最新版(32位/64位) - 飞极下载站...
  3. 易信推公众平台,今起开始公测
  4. 运营商分配给专线的多个固定公网IP怎么用
  5. 网站服务器宕机,B站服务器宕机惊动上海消防,官微致歉
  6. mac下搭建码云gitee+hexo博客
  7. SecureCRT 5.1注册码
  8. 地铁用户体验问题之自动售票机(上篇)
  9. 【Visual C++】游戏开发五十四 浅墨DirectX教程二十一 视觉的诡计 公告板 Billboard 技术
  10. 青岛智慧城市建设以人为本 勾勒未来图景