100-Days-Of-ML-Code day 1

100-Days-Of-ML-Code 100天机器学习挑战 100-Days-Of-ML-Code ML网红Siraj Raval发起了一个名为:100-Days-Of-ML-Code的挑战赛,意为鼓励同学们每天抽出点时间来学习机器学习,看看100天后你有了哪些进步 目前Github上面最火爆的100-Days-Of-ML-Code就是Avik-Jain的机器学习项目,超赞的配图,清晰的知识点梳理,是入门机器学习非常好的项目 Github:https... 阅读详情

一. 数据

git地址:100-Days-of-ml,用到的数据集如下:

二. 流程 

day1 

三. 代码 

#step1: 导入相应的包
import numpy as np
import pandas as pd
 
#step2:导入数据集
'''
pandas读取excel的示例
.iloc:根据标签的所在位置,从0开始计数,选取列,iloc[a:b,c:d]选取a-b行的c-d列的数据
loc:根据DataFrame的具体标签选取列

filename='../file/testiloc'
data=pd.read_excel(filename)
data_test1=data.iloc[:,:8]  #选取位置为[0,8)列的整列数据
data_test2=data.iloc[0:2,8]  #选取位置为8的列的[0,2)行的数据
data_test3=data.loc[0:2,'工龄']  #选取列名为‘工龄’的[0,2]行的数据

'''
data = pd.read_csv('./Data.csv', encoding='gb18030')
X = data.iloc[: , :-1].values # 取所有行的从第一列到最后一列的数据
Y = data.iloc[: , 3].values # 取所有行的第3列的数据
#step3:处理缺失数据 NaN
'''
这里解释一下transform和fit_transform
fit(x,y)传两个参数的是有监督学习的算法,fit(x)传一个参数的是无监督学习的算法,比如降维、特征提取、标准化
fit和transform没有任何关系,仅仅是数据处理的两个不同环节,之所以出来这么个函数名,仅仅是为了写代码方便,
所以会发现transform()和fit_transform()的运行结果是一样的。
注意:运行结果一模一样不代表这两个函数可以互相替换,绝对不可以!!!
transform函数是一定可以替换为fit_transform函数的
fit_transform函数不能替换为transform函数!!!理由解释如下:
 sklearn里的封装好的各种算法都要fit、然后调用各种API方法,transform只是其中一个API方法,
 所以当你调用除transform之外的方法,必须要先fit,为了通用的写代码,还是分开写比较好 
也就是说,这个fit相对于transform而言是没有任何意义的,但是相对于整个代码而言,fit是为
后续的API函数服务的,所以fit_transform不能改写为transform。
'''
from sklearn.preprocessing import Imputer
imputer = Imputer(missing_values= "NaN", strategy="mean", axis=0)
imputer = imputer.fit(X[:, 1:3])
X[:, 1:3] = imputer.transform(X[:, 1:3])
 
#step4:编码解析分类数据
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_X = LabelEncoder()
X[:, 0] = labelencoder_X.fit_transform(X[:, 0])
 #创建一个虚拟变量
#categorical_features = 'all',这个参数指定了对哪些特征进行编码,默认对所有类别都进行编码。
# 也可以自己指定选择哪些特征,通过索引或者 bool 值来指定
onehotencoder = OneHotEncoder(categorical_features=[0]) #等价于true(第一列特征),表示就对第一列特征进行编码
X = onehotencoder.fit_transform(X).toarray() #或者这里也可以在上一行设置成OneHotEnconder(sparse = False)就不需要.toarray()
labelencoder_Y = LabelEncoder()
Y = labelencoder_Y.fit_transform(Y)  #疑问,为什么这里不用将Y转换成OneHotEncoder编码形式?
 
#step5:把数据分为训练集和测试集
from sklearn.cross_validation import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=0)
 
#step6:特征缩放
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)

四. 详解

 

第一步:导入库
导入所需要的python库,首先确保已经安装了numpy库、pandas库,为了使用方便,用as进行重命名。

import numpy as np
import pandas as pd


第二步:导入数据
导入准备好的csv数据,数据。注意这里的Data.csv存放在当前的工作目录下,否则要使用绝对路径。

dataset = pd.read_csv('Data.csv')


可以查看一下数据的前几行:

dataset.head()


è¿éåå¾çæè¿°
 
还可以查看数值型数据的统计信息:

dataset.describe()


è¿éåå¾çæè¿°
 
对数据进行切片,iloc表示取数据集中的某些行和某些列,逗号前表示行,逗号后表示列,这里表示取所有行,列取除了最后一列的其他列,而最后一列是应变量(Y)

X = dataset.iloc[ : , :-1].values
Y = dataset.iloc[ : , 3].values


数据如下: 
y

第三步:处理缺失值
刚才的X数据中我们可以看到部分数据为NaN,对于这些缺失值常用的处理办法有:1、删除包含缺失值的数据列,2、填补缺失值(平均值、众数)。对于本例中的数据,我们使用平均数填充缺失值。这里用到python机器学习中最常用的sklearn库。

from sklearn.preprocessing import Imputer
imputer = Imputer(missing_values = "NaN", strategy = "mean", axis = 0)
imputer = imputer.fit(X[ : , 1:3])
X[ : , 1:3] = imputer.transform(X[ : , 1:3])

现在来观察一下处理后的X: 
 tx
可以看到NaN值已经被处理为平均值了。

第四步:对分类变量的处理
我们可以看到上面X的Country列都是类别字符,这对机器学习来说是无法处理的类型,所以要对这一列进行类别编码。这里给的编码不太合理,不同的国家的地位应该是一样的,却给了不一样的数值,可能会造成机器学习的偏差,建议使用OneHot编码。

from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_X = LabelEncoder()
X[ : , 0] = labelencoder_X.fit_transform(X[ : , 0])

现在来看看处理后的X: 
 tx1
处理完X,我们再来处理Y,这里我们用onehot编码:

onehotencoder = OneHotEncoder(categorical_features = [0])
X = onehotencoder.fit_transform(X).toarray()
labelencoder_Y = LabelEncoder()
Y =  labelencoder_Y.fit_transform(Y)

ty
第五步:划分测试集、训练集
训练集和测试集的比例为4:1

from sklearn.cross_validation import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split( X , Y , test_size = 0.2, random_state = 0)

第六步:特征缩放
也就是常说的归一化处理,防止某些特征的值特别大而影响机器学习的效果。

from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.fit_transform(X_test)

来看看现在得到的数据: 
 ex
到这里,预处理就全部完成了,这样的数据就可以直接进行机器学习了。

100 Days Of ML Code 学习笔记-Day 1 github 阅读详情

相关推荐

100 Days Of ML Code:Day1-Data Preprocessing(数据预处理)

100天机器学习挑战汇总文章链接在这儿。 Data Preprocessing -- Getting Started with Machine Learning 第1天学习的内容主要是数据预处理。主要包括: 目录 Step 1:导入库 Step 2:导入数据集 Step 3:处理缺失数据 Step 4:把分类数据转换为数字 Step 5:将数据集分为训练集和测试集 Step ...

大羚羊的学习博客 1079

100-Days-Of-ML-Code 第一天 数据预处理

https://github.com/MLEveryday 中文版 https://github.com/Avik-Jain/100-Days-Of-ML-Code/ 英文版 第一天 数据预处理 1 import所需库 import numpy as np import pandas as pd 2 读取数据 X 和Y 注意 :为左闭右开 此处 -1不取,即X的最后一列不取 i.loc[ ]...

wehung的博客 1140

洛谷P5707 【深基2.例12】上学迟到(c语言)

第一篇题解 题目描述 yyy 的学校要求早上 8 点前到达。学校到 yyy 的家一共有 s(s\le 10000)s(s≤10000) 米,而 yyy 可以以 v(v<10000)v(v<10000) 米每分钟的速度匀速走到学校。此外在上学路上它还要额外花 10 分钟时间进行垃圾分类。请问为了避免迟到 yyy 最晚什么时候出门?输出 HH:MM 的时间格式,不足两位时补零。由于路途遥远, yyy 可能不得不提前一天出发,不过不可能提前超过一天。 输入格式 两个正整数 s,v,意思已经在题目中给定

cc_love_program的博客 1万+

100-Days-Of-ML-Code 项目教程

100-Days-Of-ML-Code 项目教程 100-Days-Of-ML-Code100 Days of ML Coding项目地址:https://gitcode.com/gh_mirrors/10/100-Days-Of-ML-Code 1. 项目目录结构及介绍 该项目是 Avik Jain 开启的 100-Days-Of-ML-Code 挑战记录,旨在每天学习并实践机器学习代码。以下...

gitblog_00436的博客 569

【Unity动画系统】详解Root Motion动画在Unity中的应用(一)

什么时候勾选Bake into pose,当不希望动画带动游戏对象旋转时。在旋转的动画中一般是不用勾选的,因为就需要用它来带动我们的角色对象旋转。但在比如前进、后退、待机等动画来说,我们就可以勾选这里,以避免因动画文件本身的瑕疵而给我们带来的旋转。loop match:代表了这个动画在角度上的吻合度。如果这个动画在播放中转角过大,那么就会显示红色,告诉我们如果勾选bake into pose,则会带来不好的效果。

weixin_60154963的博客 6802

libiec61850实战:手把手教你用C语言动态获取IED设备模型(附完整代码解析)

本文详细介绍了如何使用libiec61850库通过C语言动态获取IED设备模型,包括环境配置、连接建立、模型遍历及错误处理等关键步骤。通过完整的代码示例和实战案例,帮助开发者掌握智能变电站通信中的核心技术,提升工业自动化系统的开发效率。

weixin_42519985的博客 433

7天快速入门机器学习:100-Days-Of-ML-Code 完整指南

100-Days-Of-ML-Code 是一个专为机器学习初学者设计的实践项目,通过每天一个核心概念和实战练习,帮助你系统掌握机器学习基础。本指南将带你了解项目结构、核心内容和快速上手方法,让你在最短时间内踏入机器学习的大门。 ## 📋 项目核心内容概览 项目包含从基础到进阶的机器学习知识点,通过结构化的每日任务帮助学习者逐步构建知识体系。主要涵盖: - **数据预处理**(Day 1)

gitblog_00770的博客 534

从零到一:基于STM8的125KHz RFID读卡器实现与曼彻斯特码解析实战

本文详细介绍了基于STM8单片机的125KHz RFID读卡器实现过程,重点解析了曼彻斯特码的编码原理与解码算法。通过硬件电路设计、软件实现及性能优化,帮助开发者低成本构建稳定读取EM4100卡片的系统,适用于门禁、考勤等应用场景。

weixin_42525211的博客 231

100天机器学习编码挑战:从入门到精通的学习之旅

100-Days-Of-ML-Code项目为机器学习初学者提供了一个结构化的学习路径。通过100天的持续努力,你可以从机器学习的新手成长为具备实战能力的学习者。无论你是计算机科学学生、数据分析师,还是对人工智能感兴趣的专业人士,这个项目都能帮助你系统地学习机器学习知识,为你的职业发展打开新的可能性。现在,是时候开始你的机器学习之旅了。记住,每个专家都曾是初学者,持续学习和实践是成功的关键。让我们一起在这100天的旅程中探索机器学习的奇妙世界吧!

2401_87189860的博客 1075

Unity多渠道APK打包:同一工程稳定输出不冲突安装包

Android应用多渠道分发是移动开发的基础场景,其核心在于解决包名唯一性、渠道可识别性与构建可重复性三大问题。原理上,Unity安卓打包本质是三阶段流程:生成Android工程、Gradle编译、APK签名,而包名冲突根源在生成阶段对PlayerSettings的强依赖。技术价值体现在规避人工配置失误、支撑CI/CD自动化、满足华为/小米等商店合规要求。典型应用场景包括应用宝、TapTap、B站等渠道独立包管理,以及AB测试、灰度发布等运营需求。本文聚焦Unity原生方案,通过BuildPlayerOpt

weixin_33736048的博客 794

【QT开发教程】使用Qt进行NFC编程

近场通信(NFC,Near Field Communication)技术广泛应用于现代设备中,例如智能手机、支付终端和门禁系统。Qt提供了一套完整的NFC模块,使开发者可以轻松地在应用程序中实现NFC功能。本文将介绍如何在Qt中进行NFC编程,包括基本概念、使用方法以及一些实际的示例。

科技改变人类,技术成就未来 1465

MXNet Scala 在 IntelliJ IDE 中的开发环境搭建与实战指南

本指南以 MXNet 官方文档《Run MXNet Scala Examples Using the IntelliJ IDE (macOS)》为骨架,系统讲解如何在 macOS 与 Ubuntu 16.04 上从零搭建 IntelliJ + Maven + Scala 的 MXNet 开发环境:从安装前置依赖、获取 `org.apache.mxnet` Maven 包、创建并配置 Scala/M

gitblog_00054的博客 786

芒果YOLO11改进21:检测头Head篇:即插即用|新颖轻量化非对称多级压缩LADH检测头,原创改进适配YOLOv8高效检测头,检测头新颖性改进,全网首发独一份

检测头Head篇:即插即用|新颖轻量化非对称多级压缩LADH检测头,原创改进适配YOLOv8高效检测头,检测头新颖性改进,全网首发独一份

包括YOLOv5、YOLOv7、YOLOv8等模型改进 790

[Day_1]100-Days-Of-ML-Code

原文见https://github.com/MLEveryday/100-Days-Of-ML-Code/blob/master/Code/Day%201_Data_Preprocessing.md Day_1 warning解决方法: 第三步:处理丢失数据 from sklearn.preprocessing import Imputer imputer = Imputer...

baidao945319的博客 219

Coze智能体开发:开始使用扣子

扣子全新升级!它不仅能帮你办公、做视频、写代码,更具备自主任务执行、探索进化等能力,真正从“陪你聊”走向“帮你干活”。

王国平的博客 120

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

product-management 插件完整指南:如何把 Claude 变成你的全能产品经理

周五晚上你还在对着空白文档憋周报,周一早会要讲路线图时却说不清"为什么先做 A 不做 B",客户投诉和竞品动作又堆成了新的高点——产品经理的日常,往往不是思考不够,而是重复劳动太多。开源仓库 knowledge-work-plugins 里的 product-management 插件正是为此而生:它专为 Claude Cowork 设计(Claude Code 也兼容),把 PRD 撰写、路线图

gitblog_01035的博客 356

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

100-Days-Of-ML-Code-Day 1

Day1-数据预处理 原文:https://github.com/Avik-Jain/100-Days-Of-ML-Code 译文:https://github.com/MLEveryday/100-Days-Of-ML-Code 代码: # step 1: 导入Numpy和Pandas库 import numpy as np import pandas a...

会飞的猪_的博客 450

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

100-Days-Of-ML-Code day1-day6 notes

X = dataset.iloc[ : , :-1].values # 取所有行的从一列到最后一列 Y = dataset.iloc[ : , 3].values # 取所有行的第列   OneHotEncoder:直观来说就是有多少个状态就有多少比特,而且只有一个比特为1,其他全为0的一种码制.机器学习中对于离散型的分类型的数据,需要对其进行数字化 单元线性回归用于单变量预测  ...

Jack's blog 471

100-Days-Of-ML-Code知识点积累 day1,day2

使用sklearn-preprocessing Imputer进行数据预处理   在scikit-learn的模型中都是假设输入的数据是数值型的,并且都是有意义的,如果有缺失数据是通过NAN,或者空值表示的话,就无法识别与计算了。 要弥补缺失值,可以使用均值,中位数,众数等等。Imputer这个类可以实现。 from sklearn.preprocessing import Impu...

u013841458的博客 370

【100-Days-of-ML-Code-master】day1: Data PreProcessing(数据预处理)

step1: 引入必要的库。Numpy(数学函数)和Pandas(引用和管理数据集)是两个基本的库 import Numpy as np import Pandas as pd step2:引入数据集。用pandas中的read_csv方法读取数据作为数据帧;然后分别得到自变量和因变量的矩阵和向量。 datasets = pd.read_csv('Data.csv') X = datasets...

iCassiel 384

100-Days-Of-ML-Code 评注版(Day 1)

Day 1_Data PreProcessing(数据预处理) 本文引用自 Day 1_Data PreProcessing, 对其中内容进行了评注与补充说明。 导入数据 dataset = pd.read_csv('Data.csv') X = dataset.iloc[ : , :-1].values Y = dataset.iloc[ : , 3].values 处理缺失数据 通过观察...

weixin_30871905的博客 93

100 Days Of ML Code 学习笔记-Day 2

今天接着学习Day2:

Agnes_Zhang的博客 452

深度解析Umi-OCR:开源免费的离线OCR软件实战指南

在数字化办公和开发工作中,**OCR文字识别**已成为处理图像文本的核心技术。作为一款开源、免费的离线OCR软件,Umi-OCR凭借其强大的**截图识别**和**批量处理**功能,为开发者提供了高效的文字提取解决方案。无需网络连接,支持多国语言库,这款工具正在重新定义本地OCR应用的边界。 ## 🔍 Umi-OCR的核心功能架构 ### 截图OCR:即时识别的高效工具 Umi-OCR的**

gitblog_00022的博客 839

100天机器学习(100-Days-Of-ML)day1

本系列为100天机器学习学习笔记。详细请参考下方作者链接: 100天机器学习github: https://github.com/MLEveryday/100-Days-Of-ML-Code Day1 第1步:导入库 import numpy as np import pandas as pd 数据集: 第2步:导入数据集 dataset = pd.read_csv('Data.csv') ...

三年研究生能改变多少 1118

机器学习竞赛策略:100-Days-Of-ML-Code项目Kaggle实战指南

100-Days-Of-ML-Code中文版项目是一个全面的机器学习实战教程,通过100天的系统学习,帮助新手掌握从数据预处理到模型部署的完整流程。本指南将结合该项目的核心资源,为你揭示如何在Kaggle竞赛中脱颖而出,从数据处理到模型优化,一站式掌握实战技巧。 ## 一、数据预处理:Kaggle竞赛的基础准备 数据预处理是机器学习项目的第一步,也是决定模型性能的关键环节。在Kaggle竞赛中

gitblog_01012的博客 989
上一篇: docker通过网桥跨主机连接
下一篇: How to enable sudo commands over SSH without asking password?如何ssh到远程服务器执行sudo命令时不输入密码
土豆西瓜大芝麻
博客等级 码龄18年 1189粉丝 238原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值