1.数据集的组成
文件
pandas/numpy
- kaggle
- UCI
- scikit-learn
常用数据集结构
特征值+目标值
特征值:身高,体重,肤色,头发长
目标值:男,女
pandas:读取数据 dataframe 缺失值,数据转换
重复值,需要进行去重
sklearn:对特征进行 处理
特征工程:将原始数据转换为更好预测模型的特征值
#安装scikit-learn
pip3 install Scikit-learn
报错+解决:https://blog.csdn.net/congcong_i/article/details/116500921
2.特征抽取
sklearn.feature_extraction
*字典特征抽取
sklearn.feature_extraction.DictVectorizer
语法
DictVectorizer(sparse=True,…)
DictVectorizer.fit_transform(X)
X:字典或者包含字典的迭代器
返回sparse矩阵
DictVectorizer.inverse_transform(X)
数组或者sparse矩阵
饭会转换之前数据格式
DictVectorizer.get_feature_names()
返回类别名称
DictVectorizer.transform(x)
import imp
from sklearn.feature_extraction import DictVectorizer
def dictvec():
#实例化
dict = DictVectorizer(sparse=False)
#调用fit_transform
data = dict.fit_transform([{'city': '北京','temperature': 100}, {'city': '上海','temperature':60}, {'city': '深圳','temperature': 30}])
print(dict.get_feature_names())
print(data)
return None
if __name__ == "__main__":
dictvec()
scipy sparse矩阵 节约内存,方便读取
ndarray类型
字典数据抽取:把字典中一些类别的数据,分别转换成特征
数组形式,有类别的特征,先转换成字典数据
one-hot编码
3.文本特征抽取以及中文问题
sklearn.feature_extrdaction.text.CountVectorizer
CountVectorizer()
CountVectorizer.fit_transform(X)
CountVectorizer.inverse_transform(X)
CountVectorizer.get_feature_names(X)
import imp
from sklearn.feature_extraction import DictVectorizer
from sklearn.feature_extraction.text import CountVectorizer
def dictvec():
#实例化
dict = DictVectorizer(sparse=False)
#调用fit_transform
data = dict.fit_transform([{'city': '北京','temperature': 100}, {'city': '上海','temperature':60}, {'city': '深圳','temperature': 30}])
print(dict.get_feature_names())
print(data)
return None
def countvec():
cv = CountVectorizer()
data = cv.fit_transform(["life is short,i like python", "life is too long,i dislike python"])
print(cv.get_feature_names())
print(data.toarray())
return None
if __name__ == "__main__":
countvec()
统计所有文章当中的所有的词,重复的只统计一次
对每篇文章,在词的列表里面进行统计次数
单个英文字母不统计:没有分类依据
文本特征抽取:Count
文本分类
情感分析
4. tf-df分析问题
Tf:term frequency 出现的次数
idf:逆文档频率inverse document frequency log(总文档数量、该词出现的文档数量)
tf * idf 重要性程度
sklearn.feature_extraction.text.TfidfVectorizer
TfidfVectorizer(stop_words=None,…)
from sklearn.feature_extraction import DictVectorizer
def hanzivec():
"""
中文特征值化
:return: None
"""
c1, c2, c3 = cutword()
print(c1, c2, c3)
cv = CountVectorizer()
data = cv.fit_transform([c1, c2, c3])
print(cv.get_feature_names())
print(data.toarray())
return None
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__":
hanzivec()
tfidfvec()