datasets.load_*() 加载小数据集datasets.load_iris(), datasets.load_boston()
datasets.fetch_*(data_home=None, sunset=‘train’ ) 加载大数据集datasets.fetch_newgroups()
from sklearn.datasets import load_iris
def datasets_demo():
'''鸢尾花数据集演示'''
# 获取数据集
iris = load_iris()
# 输出结果
print(iris)
print('返回特征值:\n:', iris['data'])
print('鸢尾花的目标值:\n', iris.target)
print('返回特征值的名称:\n', iris.feature_names)
print('返回目标值的名称:\n', iris.target_names)
print('鸢尾花的描述:\n', iris.DESCR)
return None
datasets_demo()
1.将任意数据转换成为可用于机器学习的数字特征
2.特征提取api--->sklearn.feature_extraction
实例化一个转化器
Transfer = DictVectorizer()
对数据进行转换
data = transfer.fit_transform(data)
展示我们特征的名称
transfer.get_feature_names()
对的得到的结果进行处理
data.toarray() 得到的是一个二维数组
sklearn.feature_extraction.DictVectorizer(sparse=True)
sparse矩阵好处:降低内存,提高效率
from sklearn.feature_extraction import DictVectorizer
def dict_demo():
'''字典特征演示'''
#获取数据
data = [{'city': '北京','temperature':100},{'city': '上海','temperature':60},{'city': '深圳','temperature':30}]
# 实例化一个转换器,得到的结果不要sparse矩阵
transfer = DictVectorizer(sparse=False)
# 对数据进行转换
data = transfer.fit_transform(data)
# 输出结果
print('返回特征的名称:\n', transfer.get_feature_names())
print("返回字典特征提取结果:\n", data)
return None
sklearn.feature_extraction.text.CountVectorizer(stop_words=[])
CountVectorizer() 忽略了单个单词和符号作为特征值的可能。
stop_words=['is'] 限制某些单词作为特征值。
data.toarray() 可以使sprase矩阵,转换为二维数组的形式。
from sklearn.feature_extraction.text import CountVectorizer
def text_demo():
'''英文文本特征提取'''
# 获取数据
data = ['life is short, i like python', 'life is too long , i dislike python']
transfer = CountVectorizer(stop_words=['is'])
# 传入数据,进行转换
data = transfer.fit_transform(data)
print('返回特征名称:\n', transfer.get_feature_names())
print('返回文本特征提取结果:\n', data.toarray())
return None
from sklearn.feature_extraction.text import CountVectorizer
def text_demo():
'''中文文本特征提取'''
# 获取数据
data = ['人生苦短,我喜欢python','生活太长久,我不喜欢python']
transfer = CountVectorizer(stop_words=['is'])
# 传入数据,进行转换
data = transfer.fit_transform(data)
print('返回特征名称:\n', transfer.get_feature_names())
print('返回文本特征提取结果:\n', data.toarray())
return None
# 中文文本分词,特征提取
import jieba
from sklear.feature_extraction.text import CountVectorizer
def cut_word(text):
'''我爱北京天安门'''
'''我 爱 北京 天安门'''
test = ' '.join(list(jieba.cut(text)))
return text
def chinese_text_demo2():
'''中文文本特征提取'''
# 获取数据
text = ['今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上,所以每个人不要放弃今天。','我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看到宇宙时,我们是在看它的过去。','如果只用一种方式了解某样事物,你就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。']
text_list = []
for sent in text:
text_list.append(cut_word(sent)
print(text_list)
# 实例化一个转换器
transfer = CountVectorizer()
# 传入数据进行转换
data = transfer.fit_transform(text_list)
print('特征值名称:\n', transfer.get_feature_names())
print('中文文本特征值提取结果:\n', data.toarray())
return None
词频(term frequency,tf)指的是某一个给定的词语在该文件中出现的频率
逆向文档频率(inverse document frequency,idf)是一个词语普遍重要性的度量。某一特定词语的idf,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取以10为底的对数得到
# 中文文本分词,特征提取TF-IDF
import jieba
from sklear.feature_extraction.text import TfidfVectorizer
def cut_word(text):
'''我爱北京天安门'''
'''我 爱 北京 天安门'''
test = ' '.join(list(jieba.cut(text)))
return text
def chinese_text_demoe():
'''中文文本特征提取'''
# 获取数据
text = ['今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上,所以每个人不要放弃今天。','我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看到宇宙时,我们是在看它的过去。','如果只用一种方式了解某样事物,你就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。']
text_list = []
for sent in text:
text_list.append(cut_word(sent)
print(text_list)
# 实例化一个转换器
transfer = TfidfVectorizer()
# 传入数据进行转换
data = transfer.fit_transform(text_list)
print('特征值名称:\n', transfer.get_feature_names())
print('中文文本特征值提取结果:\n', data.toarray())
return None
# 归一化演示
from sklearn.preprocessing import MinMaxScaler
import pandas as pd
def minmax_demo():
'''归一化的演示'''
# 获取数据,约会数据
data = pd.read_csv('dating.txt')
print(data)
# 实例化一个转换器, feature_range=(2,3)是归一化我们的区间
transfer = MinMaxScaler(feature_range=(2, 3))
# 进行数据转换,因为是特征提取,选前三列
data = transfer.fit_transform(data[data.columns[:3]])
print('归一化结果:\n', data)
return None
通过对原始数据进行变换把数据变换到均值为0,标准差为1范围内
作用于每一列,mean为平均值,σ为标准差
所以回到刚才异常点的地方,我们再来看看标准化
# 标准化演示
from sklearn.preprocessing import StandardScaler
import pandas as pd
def stand_demo():
'''归一化的演示'''
# 获取数据,约会数据
data = pd.read_csv('dating.txt')
print(data)
# 实例化一个转换器
transfer = StandardScaler()
# 进行数据转换,因为是特征提取,选前三列
data = transfer.fit_transform(data[data.columns[:3]])
print('归一化结果:\n', data)
print('标准化后每列均值:\n', transfer.mean_)
print('标准化后每列方差:\n', transfer.var_)
return None
适合现代嘈杂大数据场景。
降维是指在某些限定条件下,降低随机变量(特征)个数,得到一组“不相关”主变量的过程
主成分分析
定义:数据中包含冗余或无关变量(或称特征、属性、指标等),旨在从原有特征中找出主要特征。
方法:Filter(过滤式):主要探究特征本身特点、特征与特征和目标值之间关联
方差选择法:低方差特征过滤
相关系数
# 删除低方差特征值演示
threshold=3,是方差低于3的都被删除掉
from sklearn.feature_selection import VarianceThreshold
import pandas as pd
def variance_demo():
'''删除低方差特征值'''
data = pd.read_csv('factor_returns.csv')
print(data)
print(data[data.columns[1:-2]].shape)
# 实例化一个转换器
transfer=VarianceThreshold(threshold=3)
# 传入数据,进行转换
data = transfer.fit_transform(data[data.columns[1:-2]])
print('返回删除低方差特征结果:\n',data)
print('形状:\n', data.shape)
return None
# 相关性系数
from scipy.stats import pearsonr
from pandas as pd
def pearsonr_demo():
'''皮尔逊相关系数计算'''
data = pd.read_csv('factor_returns.csv')
factor = data.columns[1:-2]
for i in range(len(factor)):
for j in range(i, len(factor) - 1):
print('第%s个指标与第%s个指标之间的相关系数为%s'%(factor[i], factor[j+1], pearsonr(data[factor[i]], data[factor[j + 1]])[0
return None
import pandas as pd
data = pd.read_csv('factor_returns.csv')
sklearn.decomposition.PCA(n_components=None)
# 保留3个特征值PCA演示
from sklearn.decomposition import PCA
def pca_demo():
'''PCA演示'''
data = [[2,8,4,5],[6,3,0,8],[5,4,9,1]]
# 实例化一个转换器
transfer = PCA(n_components=3)
# 传入数据进行转换
data = transfer.fit_transform(data)
print('保留3个特征值的 PCA结果', data)
return None
import pandas as pd
products = pd.read_csv("./instacart/products.csv")[0:20000]
order_products = pd.read_csv("./instacart/order_products__prior.csv")[0:20000]
orders = pd.read_csv("./instacart/orders.csv")[0:20000]
aisles = pd.read_csv("./instacart/aisles.csv")[0:20000]
# 合并数据
tab1 = pd.merge(aisles,products,on='aisle_id')
tab2 = pd.merge(tab1,order_products,on='product_id')
tab3 = pd.merge(tab2,orders,on='order_id')
table = pd.crosstab(tab3['user_id'], tab3['aisle'])
table