Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 保存sklearn管道的intermenidte结果_Python_Scikit Learn_Pipeline - Fatal编程技术网

Python 保存sklearn管道的intermenidte结果

Python 保存sklearn管道的intermenidte结果,python,scikit-learn,pipeline,Python,Scikit Learn,Pipeline,我有一个代码示例——sklearn管道,它有两个组件(PCA和Random Forest),我想使用管道的中间结果来解释。我知道可以使用.get_params()查看中间步骤,但是否可以保存或提取中间结果以进行其他操作?我想应用PCA的附加功能(代码中的1.1和1.2部分) 我们可以将get_params()赋值给一个变量,该变量应返回类型为sklearn.decomposition.pca.pca的对象。这样,我们就可以访问分解的所有方法和属性 从sklearn.datasets导入加载\u乳

我有一个代码示例——sklearn管道,它有两个组件(PCA和Random Forest),我想使用管道的中间结果来解释。我知道可以使用.get_params()查看中间步骤,但是否可以保存或提取中间结果以进行其他操作?我想应用PCA的附加功能(代码中的1.1和1.2部分)


我们可以将
get_params()
赋值给一个变量,该变量应返回类型为
sklearn.decomposition.pca.pca
的对象。这样,我们就可以访问分解的所有方法和属性

从sklearn.datasets导入加载\u乳腺癌
将numpy作为np导入
作为pd进口熊猫
从sklearn.decomposition导入FastICA、PCA
从sklearn.employ导入随机林分类器
从sklearn.pipeline导入管道
从sklearn.model\u选择导入列车\u测试\u拆分
从sklearn.metrics导入分类报告
从sklearn.metrics导入混淆矩阵
#将数据集转换为数据帧
癌症=乳腺癌()
data=np.c_[cancer.data,cancer.target]
columns=np.append(cancer.feature_名称,[“target”])
df=pd.DataFrame(数据,列=列)
#将数据拆分为训练和测试
X=df.iloc[:,0:30]。值
Y=df.iloc[:,30]。值
X_序列,X_测试,Y_序列,Y_测试=序列测试分割(X,Y,测试大小=0.25,随机状态=0)
#创建管道
n_comp=12
clf=管道([('pca',pca(n_comp)),('RandomForest',RandomForestClassifier(n_估计器=100)))
clf.fit(X_系列、Y_系列)
### --- ###
pca=clf.get_params()['pca']
类型(pca)
#sklearn.decomposition.pca.pca
主成分分析方差比_
#阵列([9.81327198e-01、1.67333696e-02、1.73934848e-03、1.05758996e-04、,
#8.29268494e-05、6.34081771e-06、3.75309113e-06、7.08990845e-07、,
#3.16742542e-07、1.75055859e-07、7.11274270e-08、1.43003803e-08])
pca.组件形状
#(12, 30)
希望这有帮助

from sklearn.datasets import load_breast_cancer
import numpy as np
import pandas as pd
from sklearn.decomposition import FastICA, PCA
from sklearn.ensemble import RandomForestClassifier
from sklearn.pipeline import Pipeline
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix

#Convert the dataset to data frame
cancer = load_breast_cancer()     
data = np.c_[cancer.data, cancer.target]
columns = np.append(cancer.feature_names, ["target"])
df = pd.DataFrame(data, columns=columns)


#Split data into train and test 
X = df.iloc[:, 0:30].values
Y = df.iloc[:, 30].values
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.25, random_state = 0)


#Create a pipeline 
n_comp = 12
clf = Pipeline([('pca', PCA(n_comp)), ('RandomForest', RandomForestClassifier(n_estimators=100))])
clf.fit(X_train, Y_train)


#Evalute the pipeline 
cr = classification_report(Y_test, Y_pred)
print(cr)


#see the intermediate steps of the pipeline
print(clf.get_params()['pca'])


##1.1 if I create PCA outside of the pipeline 
pca = PCA(n_components=10)
principalComponents = pca.fit_transform(X)

##1.2 some explainability on pca outside of the pipeline 
pca.explained_variance_ratio_