机器学习实战

各种处理

机器学习中拿到手的数据应该经过人为的处理

预处理

我们学习机器学习最先应该做的是获取数据,机器学习的数据我们一般从UCI这个网站获取。

对于使用pandas读取的数据集,我们想要快速获取数据集的简单描述,是关于每一行,每个属性的缺失值。通常我们使用info()函数

X.info()#X是目标数据集

对于分类过的数据集,我们也可以读取类别一栏然后通过函数value_counts()来查看有多少个属性每个属性有多少样本。

X[class].value_counts()

当我们想获得每个属性的最大值,方差分位数等等,我们一般使用describe()方法来显示。

X.describe()

文本类型转换数据:OrdinalEncoder()将文本数据转换为数字类别

from sklearn.preprocessing import OrdinalEncoder
ordinal_encoder=OrdinalEncoder()
X_ordinal_encoder=ordinal_encoder.fit_transform(X["class"])

还有一种方法就是 LabelEncoder()

from sklearn.preprocessing import LabelEncoder
class_le=LabelEncoder()
data["class"]=class_le.fit_transform(data['class'].values)

数据缺失

通常我们拿到手的数据在经过上述处理后,如果我们发现了在某些样本中发现有缺失的数值,那么我们需要对它进行处理:

1:放弃这些相应样本   方法:dropna()

dropna([axis=0],[how='any'],[thresh='None'],[subset='None'],[inplace='False'])

axis:axis=0/1,表示按行/列删除

how:how=all/any,表示该行 全部缺失 或者 >1 删除该行

thresh:当该行缺失值数目达到n是删除该行

subset:选择数据的某一部分

2:放弃相应区域  方法:drop()

drop(label=[n],axis=0,)

label:就是要删除的索引或者列标签;可以写成df.drop(labels=[1,2],axis=0,inplace=ture),也可以省略不写label,即df.drop([1,2],axis=0,inplace=ture),axis也可以省略

axis:用来设置按行删除还是按列删除,有两个值可以设置,当axis=0时,代表是按照行删除;当axis=1时,代表按照列删除。

3:把缺失值设置为某个值(0,平均数/中位数)   方法:fillna()

median = X['属性'].median()
X['属性'].fillna(median,inplace=Trye)

median:填充的数值

inplace:是否改变原数据,当为True是原属数据的内存也会改变,上面两个函数也有这个属性

训练集/测试机的创建

我们对原始数据进行训练集和测试机的划分,来评估模型的泛化性能以选择最好的模型。

 纯随机的抽样:通常再划分中我们可以使用函数train_test_split(),调用格式为:

from sklearn.model_selection import train_test_split
train_set,test_set=train_test_split(X,test_size=0.2,random_state=42)
#X是原始数据,test_size测试集的大小,random_state=42设置随机数种子保证每次训练集相同

通常对于数据量足够大样本分布足够均匀时或许好用。但是有时可能会出现样本有较大偏差的情况。

  分层抽样:可以保证训练集的分布和原始数据的分布相同。

from sklearn.model_selection import StratifiedShuffleSplit
split = StratifiedShuffleSplit(n_splits=1,test_size=0.2,random_state=42)
for train_index,test_index in split.split(X,Y):
    train_set=[train_index]
    test_set=X[test_index]
#X是原始数据的属性集,y是数据的类别

 模型评估

使用交叉验证法来评估模型,使用到cross_val_score()

cross=cross_val_score(model,x,y,soring,cv)

model:估计器,也就是模型
x, y:数据,标签值
soring:调用的方法
cv:交叉验证生成器或可迭代的次数

模型调参

通常我们的模型中会出现多个参数,参数的改变会直接影响模型的泛化性能,因此当模型的泛化性能不能使人满意是我们可以进行参数调节。

推荐另一个介绍:地址

 分类模型:

分类模型常见的有监督学习:本章采用实例讲解如何用机器学习完成分类。我们使用最经典的鸢尾花数据集来进行学习。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

first青年危机

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值