Tag: scikit学习

拟合一个scikits.learn.hmm.GaussianHMM到可变长度的训练序列

我想将scikits.learn.hmm.GaussianHMM放到不同长度的训练序列中。 但是,拟合方法可以防止使用不同长度的序列 obs = np.asanyarray(obs) 它只能在同样形状的arrays上工作。 有没有人有如何进行的暗示?

如何将一个pandas DataFrame列和行的子集转换成一个numpy数组?

我想知道是否有一种更简单,高效的内存方法来从pandas数据框中select行和列的子集。 例如,给定这个数据框: df = DataFrame(np.random.rand(4,5),columns = list('abcde')) 打印df ABCDE 0 0.945686 0.000710 0.909158 0.892892 0.326670 1 0.919359 0.667057 0.462478 0.008204 0.473096 2 0.976163 0.621712 0.208423 0.980471 0.048334 3 0.459039 0.788318 0.309892 0.100539 0.753992 我只想要列'c'的值大于0.5的那些行,但是我只需要那些行的列'b'和'e'。 这是我提出的方法 – 也许有一个更好的“pandas”方式? locs = [[a','d']]中的[df.columns.get_loc(_)] 打印df [df.c> 0.5] [locs] 广告 0 0.945686 0.892892 我的最终目标是将结果转换为一个numpy数组传递给sklearn回归algorithm,所以我将使用上面的代码: training_set = array(df [df.c> 0.5] [locs]) […]

RandomForestClassifier与Scratch中的ExtraTreesClassifier学习

任何人都可以解释scikit学习中RandomForestClassifier和ExtraTreesClassifier的区别。 我花了很多时间阅读报纸: P. Geurts,D. Ernst。和L. Wehenkel,“Extremely randomized trees”,Machine Learning,63(1),3-42,2006 这似乎是ET的差异: 1)在拆分中selectvariables时,从整个训练集中抽取样本,而不是训练集的引导样本。 2)在每次拆分时,样本中的分割值是从样本中随机抽取的。 这两件事的结果是更多的“叶”。

如何使用scikit学习来计算多类别案例的精确度,召回率,准确度和f1分数?

我正在一个情绪分析问题的数据看起来像这样: label instances 5 1190 4 838 3 239 1 204 2 127 所以我的数据是不平衡的,因为1190个instances被标记为5 。 对于使用scikit的SVC进行分类。 问题是我不知道如何以正确的方式来平衡我的数据,以准确计算多类别案例的精确度,回忆率,准确度和f1分数。 所以我尝试了以下方法: 第一: wclf = SVC(kernel='linear', C= 1, class_weight={1: 10}) wclf.fit(X, y) weighted_prediction = wclf.predict(X_test) print 'Accuracy:', accuracy_score(y_test, weighted_prediction) print 'F1 score:', f1_score(y_test, weighted_prediction,average='weighted') print 'Recall:', recall_score(y_test, weighted_prediction, average='weighted') print 'Precision:', precision_score(y_test, weighted_prediction, average='weighted') print '\n clasification report:\n', classification_report(y_test, […]

sklearn:在调用LinearRegression.fit()时发现样本数不一致的数组

只是试图做一个简单的线性回归,但我很困惑这个错误: regr = LinearRegression() regr.fit(df2.iloc[1:1000, 5].values, df2.iloc[1:1000, 2].values) 这产生: ValueError: Found arrays with inconsistent numbers of samples: [ 1 999] 这些select必须具有相同的维度,而且应该是numpy数组,所以我错过了什么?

在scikit-learn中对多个列进行标签编码

我试图使用scikit学习的LabelEncoder来编码一个pandasDataFrame的string标签。 由于数据框有许多(50+)列,我想避免为每列创build一个LabelEncoder对象; 我宁愿只有一个大的LabelEncoder对象,可以在我所有的数据列中工作。 将整个DataFrame扔到LabelEncoder会产生下面的错误。 请记住,我在这里使用虚拟数据; 实际上我正在处理约50列string标签的数据,所以需要一个解决scheme,不要按名称引用任何列。 import pandas from sklearn import preprocessing df = pandas.DataFrame({'pets':['cat', 'dog', 'cat', 'monkey', 'dog', 'dog'], 'owner':['Champ', 'Ron', 'Brick', 'Champ', 'Veronica', 'Ron'], 'location':['San_Diego', 'New_York', 'New_York', 'San_Diego', 'San_Diego', 'New_York']}) le = preprocessing.LabelEncoder() le.fit(df) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/Users/bbalin/anaconda/lib/python2.7/site-packages/sklearn/preprocessing/label.py", line 103, in fit y = […]

为什么一个热门编码可以提高机器学习性能?

我注意到,当一个热门编码被用在一个特定的数据集(一个matrix)上,并用作学习algorithm的训练数据时,与使用原始matrix本身作为训练数据相比,它在预测准确性方面显示了更好的结果。 这种性能如何增长?

如何将数据分成3组(火车,validation和testing)?

我有一个pandas数据框,我希望把它分成3个独立的集合。 我知道使用sklearn.cross_validation中的sklearn.cross_validation ,可以将数据分成两组(train和test)。 不过,我找不到将数据分成三组的解决scheme。 最好是我想要有原始数据的索引。 我知道一个解决方法是使用train_test_split两次,并以某种方式调整索引。 但有没有更多的标准/内置的方式将数据分成3组而不是2?