python之机器学习(序章)


机器学习的定义网上都有详细的介绍,在此不赘述,目前我认为,机器学习就是一种实现人工智能的手段


先介绍第一步:one-hot码,以及将值特征化的手段:

#one-hot码--避免权重值的影响

import pandas as pd

df = pd.DataFrame([
    ['green','m',20,'class1'],
    ['red','l',21,'class2'],
    ['blue','xl',30,'class3']
])

df.columns = ['color','size','weight','class label']
#print(df)
#运行到此处可以看到我们原始的图表

a = pd.get_dummies(df['color'])
#print(a)    #关于color的one_hot码
#至此,***我们完成了对非数值数据的特征值化***

#文本特征抽取
#目的同上
from sklearn.feature_extraction.text import CountVectorizer
vector = CountVectorizer()
res = vector.fit_transform(['life is short , I use python','life is long , I hate python'])
print(res)     #sparse矩阵
print(vector.get_feature_names())   #类别对应的名称
print(res.toarray())  #sparse --> array

#单个字母不会被统计,因为不代表实际意义;后面所带的数字是**单词**出现次数、

#关于中文文本
from sklearn.feature_extraction.text import CountVectorizer

vector = CountVectorizer()
res = vector.fit_transform(['人生苦短,我用python','人生漫长,不用python'])
print(res)
print(res.toarray())
print(vector.get_feature_names())
#在这种情况下:
#以句子为一个单位(或者说是遇到分隔符即划开(如逗号,空格))
#单个汉字同样不统计


#显然不太准确:
#from sklearn.feature_extraction.text import CountVectorizer

#vector = CountVectorizer()
#res = vector.fit_transform(['人生 苦短,我 用python','人生 漫长,不用 python'])
#print(res)
#print(res.toarray())
#print(vector.get_feature_names())
#运行上述代码会发现出现问题

import jieba
jb = jieba.cut('这个杀手不太冷')
content = list(jb)
ct = ' '.join(content)  #用空格来分割
print(ct)

#把上述代码的结果放在res = vector.fit_transform(['人生苦短,我用python','人生漫长,不用python'])中即可
#返回的不再是one-hot编码,而是在统计词汇出现的次数

相关案例的图片如下:
在这里插入图片描述
一下是一些关键点和注意事项:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

现在介绍第二部分–特征值的预处理

#特征值的预处理
#对数值型数据的处理
#(1)无量纲化--1.归一化 2.标准化
#案例(1)
#可以想象把三组数据画在三维空间中,那么误差必然较大
#使用KNN算法对数据进行说明
from sklearn.preprocessing import MinMaxScaler
mm = MinMaxScaler(feature_range=(0,1))
data = [[90,2,10,40],[60,5,15,45],[73,3,13,45]]
data = mm.fit_transform(data)
print(data)
print('\n')
#弊端:对异常值敏感

#在异常值较多的情况下使用标准化处理(使用更多)
from sklearn.preprocessing import StandardScaler
ss = StandardScaler()
data1 = [[90,2,10,40],[60,5,15,45],[73,3,13,45]]
data1 = ss.fit_transform(data)
print(data1)

一下是一些关键点:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

最后介绍第三部分–特征选择

#特征选择:从特征值中选择出有意义,对模型有帮助的特征作为机器学习最终输入的数据
方式1(方差过滤)--主要应用于需要遍历的算法类型
from sklearn.feature_selection import VarianceThreshold
#threshold表示方差,删除方差小于后面数据的值,默认为0
v = VarianceThreshold(threshold=3)
a = v.fit_transform([[0,2,4,3],[0,3,7,3],[0,9,6,3]])
print(a)    #显示的是保留值

#一步到位--计算特征值方差的中值
#例如:
from sklearn.feature_selection import VarianceThreshold
import numpy as np   #numpy类似于matlab
feature = np.random.randint(0,100,size = (5,5))
mid = np.median(feature.var(axis = 0))  #求每一列的方差的中值
v = VarianceThreshold(threshold=mid)
a = v.fit_transform(feature)
print(a)

方式2PAC降维)略

这里列出PCA的简单实现:
在这里插入图片描述
在这里插入图片描述
以上是机器学习必须掌握的最最基本的内容,故称之为序章。
学习才刚刚开始~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

It is a deal️

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

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

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

打赏作者

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

抵扣说明:

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

余额充值