机器学习基础第一天(文本特征抽取与数据预处理)
文本特征抽取以及中文问题
from sklearn
.feature_extraction
import DictVectorizer
from sklearn
.feature_extraction
.text
import CountVectorizer
, TfidfVectorizer
import jieba
import numpy
as np
def cutword():
con1
= jieba
.cut
("今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上,所以每个人不要放弃今天。")
con2
= jieba
.cut
("我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看到宇宙时,我们是在看它的过去。")
con3
= jieba
.cut
("如果只用一种方式了解某样事物,你就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。")
content1
= list(con1
)
content2
= list(con2
)
content3
= list(con3
)
c1
= ' '.join
(content1
)
c2
= ' '.join
(content2
)
c3
= ' '.join
(content3
)
return c1
, c2
, c3
def tfidfvec():
"""
中文特征值化
:return: None
"""
c1
, c2
, c3
= cutword
()
print(c1
, c2
, c3
)
tf
= TfidfVectorizer
()
data
= tf
.fit_transform
([c1
, c2
, c3
])
print(tf
.get_feature_names
())
print(data
.toarray
())
return None
if __name__
== "__main__":
tfidfvec
()
结果展示:
今天 很 残酷 , 明天 更 残酷 , 后天 很 美好 , 但 绝对 大部分 是 死 在 明天 晚上 , 所以 每个 人 不要 放弃 今天 。 我们 看到 的 从 很 远 星系 来 的 光是在 几百万年 之前 发出 的 , 这样 当 我们 看到 宇宙 时 , 我们 是 在 看 它 的 过去 。 如果 只用 一种 方式 了解 某样 事物 , 你 就 不会 真正 了解 它 。 了解 事物 真正 含义 的 秘密 取决于 如何 将 其 与 我们 所 了解 的 事物 相 联系 。
['一种', '不会', '不要', '之前', '了解', '事物', '今天', '光是在', '几百万年', '发出', '取决于', '只用', '后天', '含义', '大部分', '如何', '如果', '宇宙', '我们', '所以', '放弃', '方式', '明天', '星系', '晚上', '某样', '残酷', '每个', '看到', '真正', '秘密', '绝对', '美好', '联系', '过去', '这样']
[[0. 0. 0.21821789 0. 0. 0.
0.43643578 0. 0. 0. 0. 0.
0.21821789 0. 0.21821789 0. 0. 0.
0. 0.21821789 0.21821789 0. 0.43643578 0.
0.21821789 0. 0.43643578 0.21821789 0. 0.
0. 0.21821789 0.21821789 0. 0. 0. ]
[0. 0. 0. 0.2410822 0. 0.
0. 0.2410822 0.2410822 0.2410822 0. 0.
0. 0. 0. 0. 0. 0.2410822
0.55004769 0. 0. 0. 0. 0.2410822
0. 0. 0. 0. 0.48216441 0.
0. 0. 0. 0. 0.2410822 0.2410822 ]
[0.15698297 0.15698297 0. 0. 0.62793188 0.47094891
0. 0. 0. 0. 0.15698297 0.15698297
0. 0.15698297 0. 0.15698297 0.15698297 0.
0.1193896 0. 0. 0.15698297 0. 0.
0. 0.15698297 0. 0. 0. 0.31396594
0.15698297 0. 0. 0.15698297 0. 0. ]]
数据特征预处理
from sklearn
.preprocessing
import MinMaxScaler
, StandardScaler
import numpy
as np
from sklearn
.impute
import SimpleImputer
from sklearn
.feature_selection
import VarianceThreshold
import sklearn
from sklearn
.decomposition
import PCA
print(sklearn
.__version__
)
def mm():
"""
归一化处理;
:return: NOne
"""
mm
= MinMaxScaler
(feature_range
=(0, 1))
data
= mm
.fit_transform
([[90,2,10,40],[60,4,15,45],[75,3,13,46]])
print(data
)
return None
def stand():
"""
标准化缩放,与平均数之差比上标准差
:return:
"""
std
= StandardScaler
()
data
= std
.fit_transform
([[ 1., -1., 3.],[ 2., 4., 2.],[ 4., 6., -1.]])
print(data
)
return None
def im():
"""
缺失值处理
:return:NOne
"""
im
= SimpleImputer
(missing_values
=np
.nan
, strategy
='mean',verbose
=0)
data
= im
.fit_transform
([[1, 2], [np
.nan
, 3], [7, 6]])
print(data
)
return None
def var():
"""
特征选择-删除低方差的特征
:return: None
"""
var
= VarianceThreshold
(threshold
=1.0)
data
= var
.fit_transform
([[0, 2, 0, 3], [0, 1, 4, 3], [0, 1, 1, 3]])
print(data
)
return None
def pca():
"""
主成分分析进行特征降维,参数n_components保留90%的信息
:return: None
"""
pca
= PCA
(n_components
=0.9)
data
= pca
.fit_transform
([[2,8,4,5],[6,3,0,8],[5,4,9,1]])
print(data
)
return None
if __name__
== "__main__":
mm
()
stand
()
im
()
var
()
pca
()
结果展示:
0.23.2
[[1. 0. 0. 0. ]
[0. 1. 1. 0.83333333]
[0.5 0.5 0.6 1. ]]
[[-1.06904497 -1.35873244 0.98058068]
[-0.26726124 0.33968311 0.39223227]
[ 1.33630621 1.01904933 -1.37281295]]
[[1. 2.]
[4. 3.]
[7. 6.]]
[[0]
[4]
[1]]
[[ 1.28620952e-15 3.82970843e+00]
[ 5.74456265e+00 -1.91485422e+00]
[-5.74456265e+00 -1.91485422e+00]]
转载请注明原文地址:https://blackberry.8miu.com/read-38481.html