当前位置:   article > 正文

python机器学习

python机器学习

前言

        临时学习,浅学皮毛

机器学习是什么

数据        模型        预测        从历史数据当中获得规律

机器学习算法分类

监督学习

目标值: 类别 -分类问题

        k-近邻算法, 贝叶斯分类, 决策树与随机森林 , 逻辑回归

目标值: 连续型的数据 - 回归问题

        线性回归,岭回归

目标值: 无 - 无监督学习

        聚类 k-means

分类问题指的是分类别,辨别是什么

回归问题指的一系列数据预测

机器学习开发流程

  1. 开发流程都是一样
  2. 数据获取
  3. 数据处理
  4. 特征工程
  5. 机器学习算法训练-也叫模型
  6. 模型评估
  7. 应用

python-sklearn

pip install Scikit-learn==0.19.1 //安装

pip install sklearn

命令行pip list 查看是否有sklearn

scikit-learn数据集api

sklearn.datasets.load_*()  获取小规模数据集

sklearn.datasets.fetch_*() 获取大规模数据集

小数据集

sklearn.datasets.load_iris() //加载返回鸢尾花卉数据集

测试获取数据集

  1. from sklearn.datasets import load_iris
  2. def datasets_demo():
  3. """
  4. sklearn数据集使用
  5. :return:
  6. """
  7. #获取数据集
  8. iris = load_iris()
  9. print("鸢尾花数据集:\n",iris)
  10. print("查看数据集描述:\n",iris["DESCR"])
  11. print("查看特征值的名字:\n",iris.feature_names)
  12. print("查看特征值:\n",iris.data,iris.data.shape)
  13. print("目标值的名字:\n",iris.target_names)
  14. print("特征值:\n",iris["data"])
  15. return
  16. if __name__ == '__main__':
  17. datasets_demo()

数据集的划分

机器学习一般数据集会划分两个部分:

  • 训练数据:用于训练,构建模型
  • 测试数据:在模型检验时使用,用于评估模型是否有效

划分比率: 测试集: 20%-30% 

 数据集划分api

  1. from sklearn.model_selection import train_test_split #数据集划分
  2. # 数据集划分
  3. # 参数:1.x特征值2.y数据集标签值3.测试集大小指定浮点型,有默认0.25,4.随机种子random_state
  4. # 固定接收顺序 训练特征值 测试特征值 训练目标值 测试目标值
  5. x_train,x_test,y_train,y_test=train_test_split(iris.data,iris.target,test_size=0.2,random_state=22)

特征工程

特征工程的作用决定了机器学习的上线,而算法和模型只是逼近这个上限而已

什么是特征工程

用于转换数据类型为数值类型用于机器学习

sklearn 特征工程

pandas 用来数据清洗,数据处理

特征抽取/特征提取

        机器学习算法-统计方法-数学公式

                文本类型数据 -> 数值数据

        特征提取

                将任意数据转换可以用于机器学习的数字特征

                        1.特征提取

                                sklearn.feature_extraction

                        2.字典特征提取

                                sklearn.feature_extraction.DicVectorizer(sparse=True) //默认返回sparse矩阵

                                DicVectorizer.fit_transform(data) 返回sparse矩阵,标识的是有值的坐标

  1. from sklearn.feature_extraction import DictVectorizer
  2. def dict_demo():
  3. """
  4. 对字典类型的数据进行特征抽取
  5. return None
  6. :return:
  7. """
  8. data = [{"city":"北京","temperature":100},{"city":"上海","temperature":60},{"city":"深圳","temperature":30}]
  9. # 实例化转换器类
  10. transfer = DictVectorizer(sparse=False)
  11. # fit_transform 调用传入数据,
  12. # data_new = transfer.fit_transform(data)
  13. data_new = transfer.fit_transform(data)
  14. print("属性:\n",data_new)
  15. print("特征名称:\n",transfer.get_feature_names())
  16. return None

                        3.文本特征提取

                                单词 作为 特征 句子  等

                                特征: 特征词

                                方法1:CountVectorizer 统计每个样本特征词出现的个数

  1. from sklearn.feature_extraction.text import CountVectorizer
  2. def count_demo():
  3. """
  4. 英文文本特征抽取 CountVectorizer
  5. :return:
  6. """
  7. data = ["life is short,i like like python","life is too long, i dislike python"]
  8. transfer = CountVectorizer() # 没有sparse=False这个参数,可以直接转换
  9. data_new = transfer.fit_transform(data)
  10. print(data_new.toarray())
  11. print("特征名称:n",transfer.get_feature_names())
  12. return None
  1. from sklearn.feature_extraction.text import CountVectorizer
  2. def count_chinese_demo():
  3. """
  4. 中文文本特征抽取 CountVectorizer
  5. :return:
  6. """
  7. data = ["我爱 背景 天安门","天安门 上 太阳升"]
  8. transfer = CountVectorizer() # 没有sparse=False这个参数,可以直接转换
  9. data_new = transfer.fit_transform(data)
  10. # 英文有空格隔开,中文没有空格默认会一段话作为特征词
  11. # 想要按词就得空格隔开
  12. print(data_new.toarray())
  13. print("特征名称:n",transfer.get_feature_names())
  14. return None
  1. from sklearn.feature_extraction.text import CountVectorizer
  2. import jieba #没有安装就pip install jieba
  3. def word_cut(word):
  4. """
  5. 定义jieba 特征分词
  6. :return:
  7. """
  8. return " ".join(list(jieba.cut(word)))
  9. def count_chinese_demo2():
  10. """
  11. 中文分词
  12. :return:
  13. """
  14. data = ["红尘一醉,愿得一人心","烟火夫妻,白首不相离。","弱水三千,我只取一瓢饮。","红颜易逝,伊不离君不弃。","用我三生烟火,换你一世迷离!"]
  15. data_new = []
  16. for i in data:
  17. data_new.append(word_cut(i))
  18. transfer = CountVectorizer()
  19. data_new = transfer.fit_transform(data_new)
  20. print(data_new)
  21. print("特征值名称:\n",transfer.get_feature_names())
  22. return None

                                有一些没用的词组比如你好出现的次数很多,会对结果造成很大影响

                               方法2:TfidfVectorizer

                                        TF-TDF - 重要程度, TF - 词频,IDF - 逆向文档频率

                                返回的值越大重要程度就越大

  1. from sklearn.feature_extraction.text import TfidfVectorizer
  2. def tfidf_demo():
  3. """
  4. 用TF-IDF的方法进行文本特征抽取
  5. :return:
  6. """
  7. data = ["红尘一醉,愿得一人心","烟火夫妻,白首不相离。","弱水三千,我只取一瓢饮。","红颜易逝,伊不离君不弃。","用我三生烟火,换你一世迷离!"]
  8. data_new = []
  9. for i in data:
  10. data_new.append(word_cut(i))
  11. transfer = TfidfVectorizer()
  12. data_new = transfer.fit_transform(data_new)
  13. print(data_new.toarray())
  14. print("特征值名称:\n",transfer.get_feature_names())
  15. return None

特征预处理

        通过转换函数将特征数据转换成更加适合算法模型的特征数据过程

        进行归一化/标准化

                归一化:稳定性较差,只适合传统精确小数据场景,最大值和最小值容易受到异常点影响

  1. from sklearn.preprocessing import MinMaxScaler # 归一化
  2. import pandas as pd
  3. def minmax_demo():
  4. """
  5. 归一化
  6. :return:
  7. """
  8. # 获取数据
  9. data = pd.read_csv("dating.txt")
  10. data = data.iloc[:,:3]
  11. # 实例一个转换器
  12. transfer = MinMaxScaler(feature_range=[2,3])# 默认是0-1区间
  13. data_new = transfer.fit_transform(data)

                标准化:如果出现异常点,由于具有一定数据量,少量的异常点对于平均值影响并不大

  1. from sklearn.preprocessing import StandardScaler
  2. def stand_demo():
  3. """
  4. 标准化
  5. :return:
  6. """
  7. # 获取数据
  8. data = pd.read_csv("dating.txt")
  9. data = data.iloc[:,:3]
  10. # 实例一个转换器
  11. transfer = StandardScaler()
  12. data_new = transfer.fit_transform(data)
  13. print(data_new)
  14. return None

特征降维

        限定条件下,降低随机变量(特征)个数,得到一组不相关主变量的过程

        特征选择

                Filter郭律师

                        方差选择法:低方差特征过滤,过滤掉一些不重要的特征

  1. from sklearn.feature_selection import VarianceThreshold
  2. def variance_demo():
  3. """
  4. 过滤低方差特征
  5. :return:
  6. """
  7. # 获取数据
  8. data = pd.read.csv("factor_returns.csv")
  9. data = data.iloc[:,1:-2]
  10. # 创建实例
  11. transfer = VarianceThreshold(threshold=5) #设置预值
  12. transfer.fit_transform(data)

                        相关系数 - 特征与特征之间的相关系数

                                如何知道那两个相关系数很强呢?

  1. from scipy.stats import pearsonr
  2. # 计算两个变量之间的相关系数
  3. pearsonr(data["pe_ratio"],data["pb_ratio"])

                                特征与特征之间相关性很高:

                                        1.选取其中 一个

                                        2.加权求和

                                        3.主成分分析解决     

          Embeded嵌入式

                        决策树

                        正则化

                        深度学习

主成分分析

        sklearn.decomposition.PCA(n_components=None)

                n_components

                        小数 表示保留百分之之多少的信息

                        整数 减少到多少特征

  1. from sklearn.decomposition import PCA # 主成分分析
  2. def pca_demo():
  3. """
  4. PCA将为
  5. :return:
  6. """
  7. data = [[2,8,4,5],[6,3,0,8],[5,4,9,1]]
  8. # 实例化一个转换器类
  9. transfer = PCA(n_components=0.95)# 尽可能保留百分之95
  10. # 调用fit_transform
  11. data_new = transfer.fit_transform(data)
  12. print(data_new)
  13. return None

转换器

        之前做特征工程的步骤

                实例化(实例化的是一个转换器类)

                调用fit_transform(对于文档建立分词频矩阵)

        我们把特征工程的接口称之为转换器,其中转换器调用有那么几种形式

                fit_transform

                fit        计算 每一列的平均值,标准差 

                transform        (x-mean)/std进行最终的转换

预估器

在sklearn中,预估器机器学习算法的实现

1.用于分类的预估起:

  • sklearn.neighbors k-近邻算法
  • sklearn.naive_bayes 贝叶斯
  • sklearn.linear_model.LogisticRegression 逻辑回归
  • sklearn.tree 决策树与随机森林

2.用于回归的预估器

  • sklearn.linear_model.LinearRegression 线性回归
  • sklearn.linear_model.Rideg 岭回归

3.用于无监督学习的预估器

  • sklearn.cluster.KMeans 聚类

预估器算法实现:

        预估器(estimator)

                1.实例化一个estimator

                2.estimator.fit(x_train,y_train) 传入训练特征值和训练目标值计算

                        调用完生成模型

                3.模型评估

                        直接对比真实值和预测值

                                y_predict = estimator.predict(x_test) 传入测试值,生成预测结果

                                y_test == y_predict  测试目标值和预测值比较

                        计算准确率

                                accuracy = estimator.score(x_test,y_test)

线性回归

线性回归是利用回归方程(函数)对于一个或者多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式

y = w1x1 + w2x2 + w3x3 + ..... + wnxn + b = wTx +b

线性模型定义

        自变量一次

        y = w1x1 + w2x2 + w3x3 + ..... + wnxn + b = wTx +b

        参数一次

        y = w1x1 + w2x1^2 + w3x1^3 + w4x1^3 + ..... + b

线性关系和线性模型

线性关系一定是线性模型

线性模型不一定是线性关系

线性回归损失和优化

        目的是为了让参数能够更加准确

        真实的结果和预测的结果存在一定的误差,通过损失函数减少这个损失,且可以通过一些优化方法优化

        优化损失

                优化方法有两个:

                        正规方程

                        梯度下降

回归性能评估

  1. from sklearn.datasets import load_boston
  2. from sklearn.model_selection import train_test_split # 数据集划分
  3. from sklearn.preprocessing import StandardScaler #标准化
  4. from sklearn.linear_model import LinearRegression,SGDRegressor #预估器
  5. from sklearn.metrics import mean_squared_error #性能评估
  6. def linear1():
  7. """
  8. 正规方程的优化方法对波士顿房价进行预测
  9. :return:
  10. """
  11. # 1.获取数据
  12. boston = load_boston()
  13. # 2.划分数据集
  14. x_train,x_test,y_train,y_test=train_test_split(boston.data,boston.target,random_state=22)
  15. # 3.标准化
  16. transfer = StandardScaler()
  17. x_train=transfer.fit_transform(x_train) #训练特征值
  18. x_test=transfer.transform(x_test)# 测试特征值
  19. # 4.预估器
  20. estimator = LinearRegression()
  21. estimator.fit(x_train,y_train)
  22. # 5.得出模型
  23. print("正规方程权重系数为:\n",estimator.coef_)
  24. print("正规方程偏置为:\n",estimator.intercept_)
  25. # 6.模型评估
  26. y_predict = estimator.predict(x_test)
  27. print("正规方程预测房价\n",y_predict)
  28. error = mean_squared_error(y_test,y_predict)
  29. print("正规方程-均方误差\n",error)
  30. def linear2():
  31. """
  32. 梯度下降的优化方法对波士顿房价进行预测
  33. :return:
  34. """
  35. # 1.获取数据
  36. boston = load_boston()
  37. # 2.划分数据集
  38. x_train,x_test,y_train,y_test=train_test_split(boston.data,boston.target,random_state=22)
  39. # 3.标准化
  40. transfer = StandardScaler()
  41. x_train=transfer.fit_transform(x_train) #训练特征值
  42. x_test=transfer.transform(x_test)# 测试特征值
  43. # 4.预估器
  44. estimator = SGDRegressor()
  45. estimator.fit(x_train,y_train)
  46. # 5.得出模型
  47. print("梯度下降权重系数为:\n",estimator.coef_)
  48. print("梯度下降偏置为:\n",estimator.intercept_)
  49. # 6.模型评估
  50. y_predict = estimator.predict(x_test)
  51. print("梯度下降预测房价\n",y_predict)
  52. error = mean_squared_error(y_test,y_predict)
  53. print("梯度下降-均方误差\n",error)

pandas数据实际预测练习

部分数据 

  1. #模型构建
  2. tedata = salesData.loc[salesData['地区']=="Western",['年度','季度','月份','天']]
  3. # tedata['国家']=pd.factorize(salesData.loc[salesData['地区']=="Western"]['国家'])[0] # 转换成特征值,由于学习和预测需要匹配,
  4. # tedata['城市']=pd.factorize(salesData.loc[salesData['地区']=="Western"]['城市'])[0] # 预测的数据没想好如何模拟,这三种数据,
  5. # tedata['地区']=pd.factorize(salesData.loc[salesData['地区']=="Western"]['地区'])[0] # 此方法可以便捷转换成独立的特征值
  6. tedata['利润']=salesData.loc[salesData['地区']=="Western",['利润']]
  7. # tedata.head()
  8. #方差标准化函数
  9. def StandarScaler(data):
  10. new_data = (data - data.mean())/ (data.std()+0.0001)
  11. return new_data
  12. tedata.head()
  13. netedata = StandarScaler(tedata.iloc[:,:-1])
  14. netedata['利润']=tedata['利润']
  15. netedata.head()
  16. from sklearn.model_selection import train_test_split
  17. # 划分数据集
  18. # test_size = 20
  19. # train_size_pro = len(netedata.iloc[:,:-1]) - test_size
  20. # x_train,y_train = pd.DataFrameFrame(netedata.iloc[:train_size_pro,:-1]),pd.DataFrameFrame(netedata.iloc[:train_size_pro,:-1]) #训练集
  21. x_train,x_test,y_train,y_test=train_test_split(netedata.iloc[:,:-1],netedata.iloc[:,:-1],random_state=22) #这边直接使用sklearn划分
  22. from sklearn.linear_model import LinearRegression
  23. estimator = LinearRegression()
  24. estimator.fit(x_train,y_train)
  25. print("正规方程权重系数为:\n",estimator.coef_)
  26. print("正规方程偏置为:\n",estimator.intercept_)
  27. y_predict = estimator.predict(x_test)
  28. # 模型评估
  29. from sklearn.metrics import mean_squared_error
  30. error = mean_squared_error(y_test,y_predict)
  31. np.sqrt(error)
  32. data1 = pd.date_range(start='2022/1/1',end='2022/12/31',freq='D')
  33. dic = {"日期":data1}
  34. data = pd.DataFrame(dic)
  35. data['年度']=data['日期'].dt.year
  36. data['季度']=data['日期'].dt.quarter
  37. data['月份']=data['日期'].dt.month
  38. data['天']=data['日期'].dt.day
  39. data_new = StandarScaler(data.iloc[:,1:])#标准化
  40. # data_west=pd.concat([x_test,data_new])#合并,不合并也可以
  41. data_pre = estimator.predict(data_new).flatten()[:365]# 预测
  42. dit = {"日期":data1,"利润":data_pre}#展开数组
  43. pd.DataFrame(dit)['利润']

随机森林

什么是随机森林?

        随机森林是集成了决策树的分类器,多个分类器预测,最后结合成组合预测

随机森林原理过程

        随机

                两个随机

                        训练集随机

                                bootstrap 随机有放回抽样

                        特征值随机 - 从m个特征中随机抽取m个特征

                                降维,没用的抵消,突出的脱颖而出              

  1. #随机森林 到划分数据集开始
  2. from sklearn.ensemble import RandomForestRegressor
  3. rf = RandomForestRegressor()# 我们使用默认的
  4. rf.fit(x_train,y_train)#模型
  5. rf_test = rf.predict(x_test)#测试
  6. # 均方误差评估
  7. from sklearn.metrics import mean_squared_error
  8. error = mean_squared_error(y_test,rf_test)#对比
  9. np.sqrt(error)# 误差
  10. # 其余同上

k-means学习

什么是无监督学习

        没有目标值 - 无监督学习

聚类步骤

        随机设置k个特征空间内的点作为初始聚类中心

        对于其他每个点计算到k个中心的距离,离最近的聚类点作为标记类别

        对标记的聚类中心之后,重新计算每个聚类新中心点(平均点)

        直到新中心点和原中心点相同,那么结束,不相同则进行下一步操作

  1. # 聚类 dataframe
  2. from sklearn.cluster import KMeans
  3. #分4类
  4. model = KMeans(n_clusters=4).fit(data)
  1. # 建模
  2. # 先对需要构建模型的进行特征化
  3. pd.factorize() # 特征值转化
  4. # 进行标准化处理,对预测或者分类的值不能进行标准化
  5. from sklearn.preprocessing import StandardScaler
  6. scaler = StandardScaler().fit_transform(feature)
  7. # 划分数据集
  8. from sklearn.model_selection import train_test_split
  9. x_train,x_test,y_train,y_test=train_test_split(wine_data,wine_label,test_size=0.2,random_state=22) #这边直接使用sklearn划分
  10. # k-mean聚类分析
  11. from sklearn.cluster import KMeans
  12. model = KMeans(n_clusters=5).fit(scaler) # 模型构建
  13. # 聚类评分(分数越高越好)
  14. from sklearn.metrics import fowlkes_mallows_score
  15. fowlkes_mallows_score(wine_train_label,kmeans.labels_)

全代码

  1. from sklearn.datasets import load_iris #鸢尾花数据集
  2. from sklearn.model_selection import train_test_split #数据集划分
  3. from sklearn.feature_extraction import DictVectorizer # 英文特征分词
  4. from sklearn.feature_extraction.text import CountVectorizer # 中文特征分词
  5. import jieba #没有安装就pip install jieba #中文词组分组库
  6. from sklearn.feature_extraction.text import TfidfVectorizer # TD-IDF文本特征抽取
  7. from sklearn.preprocessing import MinMaxScaler # 归一化
  8. import pandas as pd # pandas数据分析库
  9. from sklearn.preprocessing import StandardScaler # 标准化
  10. from sklearn.feature_selection import VarianceThreshold #过滤低方差特征
  11. from scipy.stats import pearsonr #相关系数
  12. from sklearn.decomposition import PCA # 主成分分析
  13. def datasets_demo():
  14. """
  15. sklearn数据集使用
  16. :return:
  17. """
  18. #获取数据集
  19. iris = load_iris()
  20. print("鸢尾花数据集:\n",iris)
  21. print("查看数据集描述:\n",iris["DESCR"])
  22. print("查看特征值的名字:\n",iris.feature_names)
  23. print("查看特征值:\n",iris.data,iris.data.shape)
  24. print("目标值的名字:\n",iris.target_names)
  25. print("特征值:\n",iris["data"])
  26. # 数据集划分
  27. # 参数:1.x特征值2.y数据集标签值3.测试集大小指定浮点型,有默认0.25,4.随机种子random_state
  28. # 固定接收顺序 训练特征值 测试特征值 训练目标值 测试目标值
  29. x_train,x_test,y_train,y_test=train_test_split(iris.data,iris.target,test_size=0.2,random_state=22)
  30. return None
  31. def dict_demo():
  32. """
  33. 对字典类型的数据进行特征抽取
  34. return None
  35. :return:
  36. """
  37. data = [{"city":"北京","temperature":100},{"city":"上海","temperature":60},{"city":"深圳","temperature":30}]
  38. # 实例化转换器类
  39. transfer = DictVectorizer(sparse=False)
  40. # fit_transform 调用传入数据,
  41. # data_new = transfer.fit_transform(data)
  42. data_new = transfer.fit_transform(data)
  43. print("属性:\n",data_new)
  44. print("特征名称:\n",transfer.get_feature_names())
  45. return None
  46. def count_demo():
  47. """
  48. 英文文本特征抽取 CountVectorizer
  49. :return:
  50. """
  51. data = ["life is short,i like like python","life is too long, i dislike python"]
  52. transfer = CountVectorizer() # 没有sparse=False这个参数,可以直接转换
  53. data_new = transfer.fit_transform(data)
  54. print(data_new.toarray())
  55. print("特征名称:n",transfer.get_feature_names())
  56. return None
  57. def count_chinese_demo():
  58. """
  59. 中文文本特征抽取 CountVectorizer
  60. :return:
  61. """
  62. data = ["我爱 背景 天安门","天安门 上 太阳升"]
  63. transfer = CountVectorizer() # 没有sparse=False这个参数,可以直接转换
  64. data_new = transfer.fit_transform(data)
  65. # 英文有空格隔开,中文没有空格默认会一段话作为特征词
  66. # 想要按词就得空格隔开
  67. print(data_new.toarray())
  68. print("特征名称:n",transfer.get_feature_names())
  69. return None
  70. def word_cut(word):
  71. """
  72. 定义jieba 特征分词
  73. :return:
  74. """
  75. return " ".join(list(jieba.cut(word)))
  76. def count_chinese_demo2():
  77. """
  78. 中文分词
  79. :return:
  80. """
  81. data = ["红尘一醉,愿得一人心","烟火夫妻,白首不相离。","弱水三千,我只取一瓢饮。","红颜易逝,伊不离君不弃。","用我三生烟火,换你一世迷离!"]
  82. data_new = []
  83. for i in data:
  84. data_new.append(word_cut(i))
  85. transfer = CountVectorizer()
  86. data_new = transfer.fit_transform(data_new)
  87. print(data_new)
  88. print("特征值名称:\n",transfer.get_feature_names())
  89. return None
  90. def tfidf_demo():
  91. """
  92. 用TF-IDF的方法进行文本特征抽取
  93. :return:
  94. """
  95. data = ["红尘一醉,愿得一人心","烟火夫妻,白首不相离。","弱水三千,我只取一瓢饮。","红颜易逝,伊不离君不弃。","用我三生烟火,换你一世迷离!"]
  96. data_new = []
  97. for i in data:
  98. data_new.append(word_cut(i))
  99. transfer = TfidfVectorizer()
  100. data_new = transfer.fit_transform(data_new)
  101. print(data_new.toarray())
  102. print("特征值名称:\n",transfer.get_feature_names())
  103. return None
  104. def minmax_demo():
  105. """
  106. 归一化
  107. :return:
  108. """
  109. # 获取数据
  110. data = pd.read_csv("dating.txt")
  111. data = data.iloc[:,:3]
  112. # 实例一个转换器
  113. transfer = MinMaxScaler(feature_range=[2,3])# 默认是0-1区间
  114. data_new = transfer.fit_transform(data)
  115. return None
  116. def stand_demo():
  117. """
  118. 标准化
  119. :return:
  120. """
  121. # 获取数据
  122. data = pd.read_csv("dating.txt")
  123. data = data.iloc[:,:3]
  124. # 实例一个转换器
  125. transfer = StandardScaler()
  126. data_new = transfer.fit_transform(data)
  127. print(data_new)
  128. return None
  129. def variance_demo():
  130. """
  131. 过滤低方差特征
  132. :return:
  133. """
  134. # 获取数据
  135. data = pd.read.csv("factor_returns.csv")
  136. data = data.iloc[:,1:-2]
  137. # 创建实例
  138. transfer = VarianceThreshold(threshold=5) #设置预值
  139. data_new = transfer.fit_transform(data)
  140. print(data_new)
  141. # 计算两个变量之间的相关系数
  142. pearsonr(data["pe_ratio"],data["pb_ratio"])
  143. return None
  144. def pca_demo():
  145. """
  146. PCA将为
  147. :return:
  148. """
  149. data = [[2,8,4,5],[6,3,0,8],[5,4,9,1]]
  150. # 实例化一个转换器类
  151. transfer = PCA(n_components=0.95)# 尽可能保留百分之95
  152. # 调用fit_transform
  153. data_new = transfer.fit_transform(data)
  154. print(data_new)
  155. return None
  156. if __name__ == '__main__':
  157. #代码1:sklearn数据集使用
  158. # datasets_demo()
  159. #代码2:字典特征抽取
  160. # dict_demo()
  161. #代码3: 文本特征抽取
  162. # count_demo()
  163. # count_chinese_demo()
  164. # 代码4.jieba 特征值分词抽取
  165. # count_chinese_demo2()
  166. # 代码5.TF-IDF 特征值抽取
  167. # tfidf_demo()
  168. # 代码6.归一化
  169. # minmax_demo()
  170. pca_demo()
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/340692
推荐阅读
相关标签
  

闽ICP备14008679号