企业网站属于广告吗,软件网站开发培训,ios软件开发前景,即墨建网站价格文章目录 环境配置#xff08;必看#xff09;头文件引用1.数据集: sklearn代码运行结果 2.字典特征抽取: DictVectorizer代码运行结果稀疏矩阵 3.文本特征抽取(英文文本): CountVectorizer()代码运行结果 4.中文文本分词(中文文本特征抽取使用)代码运行结果 5.中文文本特征抽… 文章目录 环境配置必看头文件引用1.数据集: sklearn代码运行结果 2.字典特征抽取: DictVectorizer代码运行结果稀疏矩阵 3.文本特征抽取(英文文本): CountVectorizer()代码运行结果 4.中文文本分词(中文文本特征抽取使用)代码运行结果 5.中文文本特征抽取代码运行结果 6.文本特征抽取: TfidfVectorizer代码运行结果 7.归一化:MinMaxScaler代码运行结果 8.标准化: StandardScaler代码运行结果 9.过滤低方差特征: VarianceThreshold代码运行结果结果1threshold0时运行的结果结果2threshold10时运行的结果 10.数据降维: StandardScaler代码运行结果n_components2n_components0.95 代表保留95%的特征 本章学习资源 环境配置必看
Anaconda-创建虚拟环境的手把手教程相关环境配置看此篇文章本专栏深度学习相关的版本和配置均按照此篇文章进行安装。
头文件引用
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction import DictVectorizer
from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer
from sklearn.preprocessing import MinMaxScaler, StandardScaler
from sklearn.decomposition import PCA
from sklearn.feature_selection import VarianceThreshold
from scipy.stats import pearsonr
import pandas as pd
import jieba1.数据集: sklearn
代码
1.load_iris() 获取鸢尾花数据集数据集的形状为(150, 4) 2.train_test_split()调用划分数据集的函数test_size0.2意思是将150个数据中的20%划分为测试集剩下的80%为训练集。从代码运行的图中 x_train.shape: (120, 4)可以看出训练集为150 * 0.8 120个 3.其他的打印可以自己运行程序去看一下
def datasets_demo():获取鸢尾花数据集:return:# 获取鸢尾花数据集iris load_iris()print(f鸢尾花数据集的返回值: {iris})# print(查看数据集描述: \n, iris[DESCR])print(f查看特征值的名字{iris.feature_names})# print(f查看特征值{iris.data} \n 特征值的形状{iris.data.shape})print(f标签组{iris.target})print(f标签名{iris.target_names})# 数据集划分 特征数据 目标数据 测试集比例 随机种子x_train, x_test, y_train, y_test train_test_split(iris.data, iris.target, test_size0.2, random_state20)print(fx_train: \n {x_train} \n x_train.shape: {x_train.shape})return None运行结果
鸢尾花数据集的返回值:
查看特征值的名字、标签组、标签名 划分数据集后训练集的形状
2.字典特征抽取: DictVectorizer
代码
1.从运行结果可以看出city’有北京、上海、深圳三个类别对应one-hot编码就是001 010 100三种情况temperature’只有就是顺应数值。 2.DictVectorizer()默认返回的是稀疏矩阵结果在下边的运行结果中。其中的 (0, 1) 1.0 (1, 0) 1.0 (2, 2) 1.0 可以看出是对应非稀疏矩阵的坐标位置。 3.数据需要处理成字典的类型才可以使用DictVectorizer()
def dict_demo():字典特征抽取: DictVectorizer:return:data [{city: 北京, temperature: 100},{city: 上海, temperature: 60},{city: 深圳, temperature: 30}]# 1.实例化一个转换器类 不填写参数默认返回的是稀疏矩阵transfer DictVectorizer(sparseFalse)# 2.调用fit_transform()data_new transfer.fit_transform(data)print(data_new:\n, data_new)print(特征名字: \n, transfer.get_feature_names())return None运行结果 稀疏矩阵 3.文本特征抽取(英文文本): CountVectorizer()
代码
1.CountVectorizer()没有像DictVectorizer()通过输入参数来控制是否返回稀疏矩阵而是通过data_new.toarray()来转换为非稀疏矩阵 2.CountVectorizer(stop_words[“is”, “too”])可以通过入参stop_words[“is”, “too”]来控制不统计某些单词。
def count_demo():文本特征抽取: CountVectorizer:return:data [Life is short, i like like python, life is too long, i dislike python]# 1.实例化一个转换器类transfer CountVectorizer()# 2.调用fit_transform()data_new transfer.fit_transform(data)# data_new.toarray()生成非稀疏矩阵print(data_new:\n, data_new.toarray())print(特征名字: \n, transfer.get_feature_names())return None运行结果 4.中文文本分词(中文文本特征抽取使用)
代码
1.运行函数: cut_word(“我爱北京天安门”), 得到运行结果
def cut_word(text):中文分词 我爱北京天安门:param text::return:# jieba.cut(text)对字符串进行分词处理# .join() 转换为字符串tmp .join(list(jieba.cut(text)))print(f{tmp}\n{type(tmp)})return tmp运行结果 5.中文文本特征抽取
代码
1.需要调用cut_word()进行分词然后再进行特征抽取 2.中文文本特征抽取与英文文本抽取唯一的不同就是分词后续是一样的处理 3.与TfidfVectorizer()计算出的结果不同CountVectorizer()统计的是特征出现的个数TfidfVectorizer()统计的是特征的重要程度
def count_chinses_demo():中文文本特征提取自动分词:return:# 将中文文本进行分词data [一种还是一种今天很残酷明天更残酷后天很美好但绝对大部分是死在明天晚上所以每个人不要放弃今天。,我们看到的从很远星系来的光是在几百万年之前发出的这样当我们看到宇宙时我们是在看它的过去。,如果只用一种方式了解某样事物你就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。]data_new []for sent in data:data_new.append(cut_word(sent))print(fdata_new \n{data_new})# 1.实例化一个转换器类transfer CountVectorizer()# 2.调用fit_transform()data_final transfer.fit_transform(data_new)# data_final.toarray()生成非稀疏矩阵print(data_final:\n, data_final.toarray())print(特征名字: \n, transfer.get_feature_names())return None运行结果 6.文本特征抽取: TfidfVectorizer
代码
1.TfidfVectorizer(stop_words[“is”, “too”])可以通过入参stop_words[“is”, “too”]来控制不统计某些单词。 2.计算出的结果矩阵是代表各个特征的重要程度
def tfidf_demo():用TF-IDF的方法进行文本特征抽取:return:# 将中文文本进行分词data [一种还是一种今天很残酷明天更残酷后天很美好但绝对大部分是死在明天晚上所以每个人不要放弃今天。,我们看到的从很远星系来的光是在几百万年之前发出的这样当我们看到宇宙时我们是在看它的过去。,如果只用一种方式了解某样事物你就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。]data_new []for sent in data:data_new.append(cut_word(sent))# 1.实例化一个转换器类transfer TfidfVectorizer()# 2.调用fit_transform()data_final transfer.fit_transform(data_new)print(data_final:\n, data_final.toarray())print(特征名字: \n, transfer.get_feature_names())return None运行结果 7.归一化:MinMaxScaler
代码
1.需要dating.txt数据的可以把邮箱留在评论区 2.如果样本的最大值或者最小值是异常点对归一化的结果有很大的影响所以对数据进行处理更建议使用下边的标准化
def minmax_demo():归一化:return:# 1、获取数据data pd.read_csv(dating.txt)# 获取前3列数据data data.iloc[:, :3]# print(data:\n, data)# 2、实例化一个转换器类# feature_range[2, 3] 归一化放缩的范围[2, 3]transfer MinMaxScaler(feature_range[2, 3])# 3、调用fit_transform# data数据的形状(n_samples, n_features) 行:样本数 列:特征数data_new transfer.fit_transform(data)print(data_new:\n, data_new)return None运行结果
可以看到归一化后的数值全部在[2, 3]范围内,通过MinMaxScaler的入参feature_range[2, 3]来进行调整
8.标准化: StandardScaler
代码
1.处理之后对于每列来说所有数据都聚集在均值为0标准差为1的附近
def stand_demo():标准化:return:# 1、获取数据data pd.read_csv(dating.txt)data data.iloc[:, :3]# print(data:\n, data)# 2、实例化一个转换器类transfer StandardScaler()# 3、调用fit_transformdata_new transfer.fit_transform(data)print(data_new:\n, data_new)return None运行结果 9.过滤低方差特征: VarianceThreshold
代码
1.pearsonr()得出皮尔逊相关系数相关系数r的值介于-1至1之间
r 0,表示两变量正相关, r 0,两变量负相关;|r| 1,表示两变量为完全正相关, r 0,表示两变量无相关关系; 2.相关系数只看第一个值即可不需要看第二个值。例如 相关系数 (-0.004389322779936271, 0.8327205496564927) 只看-0.004389322779936271即可。
def variance_demo():过滤低方差特征:return:# 1、获取数据data pd.read_csv(factor_returns.csv)data data.iloc[:, 1:-2]print(data:\n, data)# 2、实例化一个转换器类transfer VarianceThreshold(threshold10)# 3、调用fit_transformdata_new transfer.fit_transform(data)print(data_new:\n, data_new, data_new.shape)# 计算某两个变量之间的相关系数r1 pearsonr(data[pe_ratio], data[pb_ratio])print(相关系数\n, r1)r2 pearsonr(data[revenue], data[total_expense])print(revenue与total_expense之间的相关性\n, r2)return None运行结果
结果1threshold0时运行的结果
可以看到数据原本是具有9个特征设置threshold0后过滤掉0个特征还剩下9个特征
结果2threshold10时运行的结果
可以看到数据原本是具有9个特征设置threshold10后过滤掉2个特征还剩下7个特征
10.数据降维: StandardScaler
StandardScaler()的作用数据维数压缩尽可能降低原数据的维数复杂度损失少量的信息
代码
1.n_components2减少到2个特征代码中是将4个特征减少到2个特征
def pca_demo():PCA降维主成分分析:return:data [[2, 8, 4, 5], [6, 3, 0, 8], [5, 4, 9, 1]]# 1.实例化一个转换器类# n_components 1.整数留下特征数 2.小数: 保留特征的百分比transfer PCA(n_components2)# 2.调用fit_transform()data_new transfer.fit_transform(data)print(data_new:\n, data_new)return None运行结果
n_components2 n_components0.95 代表保留95%的特征
从结果看保留95%的信息依旧还保留2个特征说明这个PCA的方法还是不错的
本章学习资源
黑马程序员3天快速入门python机器学习 我是跟着视频进行的学习欢迎大家一起来学习