我通常得到这样的PCA负载:
pca = PCA(n_components=2)
X_t = pca.fit(X).transform(X)
loadings = pca.components_
Run Code Online (Sandbox Code Playgroud)
如果我PCA使用scikit-learnpipline 运行...
from sklearn.pipeline import Pipeline
pipeline = Pipeline(steps=[
('scaling',StandardScaler()),
('pca',PCA(n_components=2))
])
X_t=pipeline.fit_transform(X)
Run Code Online (Sandbox Code Playgroud)
......有可能获得负荷吗?
只是尝试loadings = pipeline.components_失败:
AttributeError: 'Pipeline' object has no attribute 'components_'
Run Code Online (Sandbox Code Playgroud)
谢谢!
(也有兴趣coef_从学习管道中提取属性.)
我找不到Python中的内置函数来生成一个给定最小值和最大值的日志均匀分布(R等价于此处),如:loguni [n,exp(min),exp(max),base]返回n log,均匀分布在exp(min)和exp(max)范围内.
我发现的最接近的是numpy.random.uniform.
我正在使用Pipeline和FeatureUnion的scikit-learn来从不同的输入中提取特征.我的数据集中的每个样本(实例)都指的是具有不同长度的文档.我的目标是独立计算每个文档的顶部tfidf,但我不断收到此错误消息:
ValueError:blocks [0,:]具有不兼容的行维度.得到块[0,1] .shape [0] == 1,预计2000.
2000是训练数据的大小.这是主要代码:
book_summary= Pipeline([
('selector', ItemSelector(key='book')),
('tfidf', TfidfVectorizer(analyzer='word', ngram_range(1,3), min_df=1, lowercase=True, stop_words=my_stopword_list, sublinear_tf=True))
])
book_contents= Pipeline([('selector3', book_content_count())])
ppl = Pipeline([
('feats', FeatureUnion([
('book_summary', book_summary),
('book_contents', book_contents)])),
('clf', SVC(kernel='linear', class_weight='balanced') ) # classifier with cross fold 5
])
Run Code Online (Sandbox Code Playgroud)
我写了两个类来处理每个管道功能.我的问题是book_contents管道,它主要处理每个样本并独立返回每本书的TFidf矩阵.
class book_content_count():
def count_contents2(self, bookid):
book = open('C:/TheCorpus/'+str(int(bookid))+'_book.csv', 'r')
book_data = pd.read_csv(book, header=0, delimiter=',', encoding='latin1',error_bad_lines=False,dtype=str)
corpus=(str([user_data['text']]).strip('[]'))
return corpus
def transform(self, data_dict, y=None):
data_dict['bookid'] #from here take the name
text=data_dict['bookid'].apply(self.count_contents2)
vec_pipe= Pipeline([('vec', TfidfVectorizer(min_df = 1,lowercase …Run Code Online (Sandbox Code Playgroud) 更新:我必须重新编写这个问题,因为经过一些调查,我意识到这是一个不同的问题。
上下文:使用带有 scikit learn 的 kerasclassifier 包装器在 gridsearch 设置中运行 keras。系统:Ubuntu 16.04,库:anaconda 发行版 5.1、keras 2.0.9、scikitlearn 0.19.1、tensorflow 1.3.0 或 theano 0.9.0,仅使用 CPU。
代码: 我只是使用这里的代码进行测试:https : //machinelearningmastery.com/use-keras-deep-learning-models-scikit-learn-python/,第二个示例“网格搜索深度学习模型参数”。请注意第 35 行,内容如下:
grid = GridSearchCV(estimator=model, param_grid=param_grid)
Run Code Online (Sandbox Code Playgroud)
症状:当网格搜索使用超过 1个作业时(是指 cpus?),例如,将上面 A 行上的“n_jobs”设置为“2”,下面一行:
grid = GridSearchCV(estimator=model, param_grid=param_grid, n_jobs=2)
Run Code Online (Sandbox Code Playgroud)
将导致代码无限期挂起,无论是使用 tensorflow 还是 theano,并且没有 cpu 使用(请参见附加的屏幕截图,其中创建了 5 个 python 进程,但没有一个正在使用 cpu)。
通过调试,似乎是以下带有“sklearn.model_selection._search”的行导致了问题:
line 648: for parameters, (train, test) in product(candidate_params,
cv.split(X, y, groups)))
Run Code Online (Sandbox Code Playgroud)
,程序挂起无法继续。
我真的很感激一些关于这意味着什么以及为什么会发生这种情况的见解。
提前致谢
neuraxle ×4
scikit-learn ×3
numpy ×2
python ×2
keras ×1
pipeline ×1
python-3.x ×1
tensorflow ×1
theano ×1