- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在努力通过 Scikit learn 在 Python 中使用随机森林。我的问题是我用它进行文本分类(分为 3 类 - 正/负/中性),我提取的特征主要是单词/一元组,所以我需要将它们转换为数字特征。我找到了一种使用 DictVectorizer
的 fit_transform
来做到这一点的方法:
from sklearn.preprocessing import LabelEncoder
from sklearn.metrics import classification_report
from sklearn.feature_extraction import DictVectorizer
vec = DictVectorizer(sparse=False)
rf = RandomForestClassifier(n_estimators = 100)
trainFeatures1 = vec.fit_transform(trainFeatures)
# Fit the training data to the training output and create the decision trees
rf = rf.fit(trainFeatures1.toarray(), LabelEncoder().fit_transform(trainLabels))
testFeatures1 = vec.fit_transform(testFeatures)
# Take the same decision trees and run on the test data
Output = rf.score(testFeatures1.toarray(), LabelEncoder().fit_transform(testLabels))
print "accuracy: " + str(Output)
我的问题是 fit_transform
方法正在处理训练数据集,其中包含大约 8000 个实例,但是当我尝试将测试集也转换为数字特征(大约 80000 个实例)时,我收到一个内存错误:
testFeatures1 = vec.fit_transform(testFeatures)
File "C:\Python27\lib\site-packages\sklearn\feature_extraction\dict_vectorizer.py", line 143, in fit_transform
return self.transform(X)
File "C:\Python27\lib\site-packages\sklearn\feature_extraction\dict_vectorizer.py", line 251, in transform
Xa = np.zeros((len(X), len(vocab)), dtype=dtype)
MemoryError
什么可能导致此问题?是否有解决方法?非常感谢!
最佳答案
您不应该对测试数据执行 fit_transform
操作,而只能执行 transform
操作。否则,您将获得与训练期间使用的矢量化不同的矢量化。
对于内存问题,我推荐 TfIdfVectorizer
,它有许多降低维度的选项(通过删除罕见的一元语法等)。
更新
如果唯一的问题是拟合测试数据,只需将其分成小块即可。而不是类似的东西
x=vect.transform(test)
eval(x)
你可以做到
K=10
for i in range(K):
size=len(test)/K
x=vect.transform(test[ i*size : (i+1)*size ])
eval(x)
记录结果/统计数据并随后进行分析。
特别是
predictions = []
K=10
for i in range(K):
size=len(test)/K
x=vect.transform(test[ i*size : (i+1)*size ])
predictions += rf.predict(x) # assuming it retuns a list of labels, otherwise - convert it to list
print accuracy_score( predictions, true_labels )
关于machine-learning - Scikit learn - 测试集上的 fit_transform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21998008/
所以第一个问题:我读到了这个错误,它说它是类型:元组,所以我很困惑错误是什么以及如何修复它。初学者,请大家给点详细的建议。尝试按照类似问题中的说明将 (df_x) 更改为 [df_x],但没有成功。
这是我正在谈论的一个最小的例子: import numpy as np from sklearn.datasets import fetch_20newsgroups from sklearn.fea
我想更深入地了解 scikit learn 中 PolynomialFeatures 类中的 .fit_transform() 方法输出的内容。 我知道该方法正在做两件事,1) 通过将数据拟合到回归算
我对 fit_transform 函数有疑问。有人可以解释为什么数组的大小不同吗? In [5]: X.shape, test.shape Out[5]: ((1000, 1932), (1000,
嘿, 我的数据集中的“城市”列中有不同的城市名称。我很想使用 LabelEncoder() 对其进行编码。然而,我得到了非常令人沮丧的负值结果 df['city_enc'] = LabelEncode
嘿, 我的数据集中的“城市”列中有不同的城市名称。我很想使用 LabelEncoder() 对其进行编码。然而,我得到了非常令人沮丧的负值结果 df['city_enc'] = LabelEncode
from sklearn.preprocessing import MinMaxScaler() scaler = MinMaxScaler() 我可以直接做吗: scaled_data = scal
尝试执行以下代码时出现以下错误。 class LabelOneHotEncoder(): def __init__(self): self.ohe = OneHotEncode
import numpy as np import matplotlib.pyplot as plt import pandas as pd dataset = pd.read_csv('Pos
我想更多地了解 NLP。我遇到了这段代码。但是当打印结果时,我对 TfidfVectorizer.fit_transform 的结果感到困惑。我熟悉 tfidf 是什么,但我不明白这些数字是什么意思。
我有一个数据集,其中包含 3 列 310 条数据。这些列都是文本。第一列是用户在查询表单中输入的文本,第二列是标签(六个标签之一),说明输入属于哪个查询类别。 >>> data.shape (310
我正在 Python 中运行给定的行: df = df.apply(lambda x: d[x.name].fit_transform(x)) 并出现以下错误: ~/anaconda3/envs/py
我正在创建一个 GridSearchCV 分类器作为 pipeline = Pipeline([ ('vect', TfidfVectorizer(stop_words='english',s
我遇到了一个错误 AttributeError: 'RandomForestClassifier' object has no attribute 'fit_transform' 但是,sklearn
以下示例是用 Python 编写的,摘自书籍 Mastering Machine Learning . 任务概述: 训练数据存储在列向量X_train(特征)和y_train(响应变量)中 用于测试目
我正在努力通过 Scikit learn 在 Python 中使用随机森林。我的问题是我用它进行文本分类(分为 3 类 - 正/负/中性),我提取的特征主要是单词/一元组,所以我需要将它们转换为数字特
我试图理解下面的代码 from sklearn.feature_extraction.text import CountVectorizer vectorizer = CountVectorizer(
最近我注意到,如果你有一个像这样的数据框df: A B C 0 0 Boat 45 1 1 NaN 12 2 2 Cat 6 3 3 Moose
我正在使用 scikit 学习的 StandardScaler() 并注意到在我应用 transform(xtrain) 或 fit_transform(xtrain) 之后,它也会更改我的 xtra
我在 Kaggle ( https://www.kaggle.com/c/titanic/data ) 上使用泰坦尼克号数据集,我想使用 sklearn.preprocessing 中的 LabelE
我是一名优秀的程序员,十分优秀!