Questions tagged «scikit-learn»

scikit-learn是一个用于Python的机器学习库,它为数据分析和数据挖掘提供了简单有效的工具,重点是机器学习。每个人都可以使用它,并且可以在各种情况下重复使用。它基于NumPy和SciPy。该项目是开源的并且可以商业使用(BSD许可证)。

4
get_dummies(Pandas)和OneHotEncoder(Scikit-learn)之间的优缺点是什么?
我正在学习将机器学习分类器将分类变量转换为数字的不同方法。我遇到了这种pd.get_dummies方法,sklearn.preprocessing.OneHotEncoder()我想看看它们在性能和用法上有何不同。 我发现关于如何使用教程OneHotEncoder()上https://xgdgsc.wordpress.com/2015/03/20/note-on-using-onehotencoder-in-scikit-learn-to-work-on-categorical-features/自该sklearn文档对该功能的帮助不是很大。我有一种感觉,我做得不正确...但是 有人能解释一下使用pd.dummiesover的利弊sklearn.preprocessing.OneHotEncoder()吗?我知道这OneHotEncoder()为您提供了一个稀疏矩阵,但除此之外,我不确定该如何使用以及该pandas方法有什么好处。我使用效率低下吗? import pandas as pd import numpy as np from sklearn.datasets import load_iris sns.set() %matplotlib inline #Iris Plot iris = load_iris() n_samples, m_features = iris.data.shape #Load Data X, y = iris.data, iris.target D_target_dummy = dict(zip(np.arange(iris.target_names.shape[0]), iris.target_names)) DF_data = pd.DataFrame(X,columns=iris.feature_names) DF_data["target"] = pd.Series(y).map(D_target_dummy) #sepal length (cm) sepal width (cm) …

3
joblib和pickle有哪些不同的用例?
背景:我刚刚开始使用scikit-learn,并在页面底部阅读了关于joblib和pickle的信息。 使用joblib替换pickle(joblib.dump和joblib.load)可能会更有趣,这在大数据上效率更高,但只能在磁盘而不是字符串中进行酸洗。 我阅读了有关Pickle的问答,Python的Pickle 常见用例,想知道这里的社区是否可以共享joblib和pickle之间的差异?一个人何时应该使用另一个?

5
使用scikit-learn分为多个类别
我正在尝试使用scikit-learn的监督学习方法之一将文本片段分类为一个或多个类别。我尝试过的所有算法的预测功能仅返回一个匹配项。 例如,我有一段文字: "Theaters in New York compared to those in London" 而且我已经训练了算法,可以为我输入的每个文本片段选择一个位置。 在上面的例子中,我希望它返回New York和London,但是只返回New York。 是否可以使用scikit-learn返回多个结果?甚至以下一个最高概率返回标签? 谢谢你的帮助。 -更新 我尝试使用,OneVsRestClassifier但每条文本我仍然只能得到一个选择。以下是我正在使用的示例代码 y_train = ('New York','London') train_set = ("new york nyc big apple", "london uk great britain") vocab = {'new york' :0,'nyc':1,'big apple':2,'london' : 3, 'uk': 4, 'great britain' : 5} count = …

5
如何将sklearn fit_transform与pandas一起使用并返回数据框而不是numpy数组?
我想将缩放比例(使用来自sklearn.preprocessing的StandardScaler())应用于熊猫数据框。以下代码返回一个numpy数组,因此我丢失了所有列名和索引。这不是我想要的。 features = df[["col1", "col2", "col3", "col4"]] autoscaler = StandardScaler() features = autoscaler.fit_transform(features) 我在网上找到的“解决方案”是: features = features.apply(lambda x: autoscaler.fit_transform(x)) 它似乎可以工作,但是会导致弃用警告: /usr/lib/python3.5/site-packages/sklearn/preprocessing/data.py:583:DeprecationWarning:在数据中0.1d中弃用一维数组,在0.19中会引发ValueError。如果数据具有单个功能,则使用X.reshape(-1,1)来重塑数据,如果包含单个样本,则使用X.reshape(1,-1)来重塑数据。 因此,我尝试: features = features.apply(lambda x: autoscaler.fit_transform(x.reshape(-1, 1))) 但这给出了: 追溯(最近一次通话最近):文件“ ./analyse.py”,第91行,在features = features.apply(lambda x:autoscaler.fit_transform(x.reshape(-1,1)))中,文件“ / usr / lib / python3.5 / site-packages / pandas / core / frame.py“,第3972行,在apply返回self._apply_standard(f,axis,reduce = reduce)文件” …

7
带标签的sklearn图混淆矩阵
我想绘制一个混淆矩阵以可视化分类器的性能,但它仅显示标签的数字,而不显示标签本身: from sklearn.metrics import confusion_matrix import pylab as pl y_test=['business', 'business', 'business', 'business', 'business', 'business', 'business', 'business', 'business', 'business', 'business', 'business', 'business', 'business', 'business', 'business', 'business', 'business', 'business', 'business'] pred=array(['health', 'business', 'business', 'business', 'business', 'business', 'health', 'health', 'business', 'business', 'business', 'business', 'business', 'business', 'business', 'business', 'health', 'health', 'business', 'health'], dtype='|S8') …

5
将分类数据传递到Sklearn决策树
关于如何将分类数据编码到Sklearn决策树中,有几篇文章,但是从Sklearn文档中,我们得到了这些 决策树的一些优点是: (...) 能够处理数字和分类数据。其他技术通常专用于分析仅具有一种类型的变量的数据集。有关更多信息,请参见算法。 但是运行以下脚本 import pandas as pd from sklearn.tree import DecisionTreeClassifier data = pd.DataFrame() data['A'] = ['a','a','b','a'] data['B'] = ['b','b','a','b'] data['C'] = [0, 0, 1, 0] data['Class'] = ['n','n','y','n'] tree = DecisionTreeClassifier() tree.fit(data[['A','B','C']], data['Class']) 输出以下错误: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/local/lib/python2.7/site-packages/sklearn/tree/tree.py", …

13
fit_transform()接受2个位置参数,但LabelBinarizer给出了3个
我是机器学习的新手,并且一直在研究无监督学习技术。 该图显示了我的示例数据(所有清洁后)屏幕截图: 示例数据 我有两个用来清理数据的Pipline: num_attribs = list(housing_num) cat_attribs = ["ocean_proximity"] print(type(num_attribs)) num_pipeline = Pipeline([ ('selector', DataFrameSelector(num_attribs)), ('imputer', Imputer(strategy="median")), ('attribs_adder', CombinedAttributesAdder()), ('std_scaler', StandardScaler()), ]) cat_pipeline = Pipeline([ ('selector', DataFrameSelector(cat_attribs)), ('label_binarizer', LabelBinarizer()) ]) 然后,我将这两个管道进行了合并,相同的代码如下所示: from sklearn.pipeline import FeatureUnion full_pipeline = FeatureUnion(transformer_list=[ ("num_pipeline", num_pipeline), ("cat_pipeline", cat_pipeline), ]) 现在,我正在尝试对数据执行fit_transform,但它向我显示了错误。 转换代码: housing_prepared = full_pipeline.fit_transform(housing) housing_prepared …

5
使用sklearn在PCA中恢复解释名称_variance_ratio_的特征名称
我正在尝试从使用scikit-learn完成的PCA中恢复,这些功能被选择为相关。 IRIS数据集的经典示例。 import pandas as pd import pylab as pl from sklearn import datasets from sklearn.decomposition import PCA # load dataset iris = datasets.load_iris() df = pd.DataFrame(iris.data, columns=iris.feature_names) # normalize data df_norm = (df - df.mean()) / df.std() # PCA pca = PCA(n_components=2) pca.fit_transform(df_norm.values) print pca.explained_variance_ratio_ 这返回 In [42]: pca.explained_variance_ratio_ …

6
UndefinedMetricWarning:F得分定义不明确,在没有预测样本的标签中设置为0.0
我收到这个奇怪的错误: classification.py:1113: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples. 'precision', 'predicted', average, warn_for)` 但是在我第一次运行时,它也会打印f分数: metrics.f1_score(y_test, y_pred, average='weighted') 我第二次跑步,它提供的分数没有错误。这是为什么? >>> y_pred = test.predict(X_test) >>> y_test array([ 1, 10, 35, 9, 7, 29, 26, 3, 8, 23, 39, 11, 20, 2, 5, 23, 28, …

5
了解scikit CountVectorizer中的min_df和max_df
我有五个输入到CountVectorizer的文本文件。为CountVectorizer实例指定min_df和max_df时,最小/最大文档频率到底是什么意思?是某个单词在其特定文本文件中的出现频率,还是整个整体语料库(5个txt文件)中该单词的出现频率? 当min_df和max_df作为整数或浮点数提供时有何不同? 该文档似乎没有提供详尽的解释,也没有提供示例来演示min_df和/或max_df的用法。有人可以提供说明min_df或max_df的说明或示例。



5
scikit-learn .predict()默认阈值
我正在处理不平衡类(5%1)的分类问题。我想预测班级,而不是概率。 在二进制分类问题中,默认情况下是否classifier.predict()使用scikit 0.5?如果没有,默认方法是什么?如果可以,该如何更改? 在scikit中,某些分类器可以class_weight='auto'选择,但并非全部都可以。使用class_weight='auto',是否.predict()将实际人口比例用作阈值? 在MultinomialNB不支持的分类器中执行此操作的方式是什么class_weight?除了predict_proba()自己使用然后计算类之外。

13
sklearn.LabelEncoder,值之前从未出现
如果将asklearn.LabelEncoder拟合到训练集上,则在测试集上使用时如果遇到新的值,它可能会损坏。 为此我唯一能想到的解决方案是将测试集中的所有新内容(即不属于任何现有类)映射到"<unknown>",然后在其后显式添加一个相应的类LabelEncoder: # train and test are pandas.DataFrame's and c is whatever column le = LabelEncoder() le.fit(train[c]) test[c] = test[c].map(lambda s: '<unknown>' if s not in le.classes_ else s) le.classes_ = np.append(le.classes_, '<unknown>') train[c] = le.transform(train[c]) test[c] = le.transform(test[c]) 这可行,但是有更好的解决方案吗? 更新资料 正如@sapo_cosmico在评论中指出的那样,鉴于我假设是中的实现更改LabelEncoder.transform,现在上述似乎不再起作用了,该更改现在似乎正在使用np.searchsorted(我不知道以前是否是这种情况)。因此,无需将<unknown>类追加到LabelEncoder已经提取的类的列表中,而需要按排序顺序将其插入: import bisect le_classes = le.classes_.tolist() bisect.insort_left(le_classes, '<unknown>') le.classes_ …

3
LogisticRegression:未知标签类型:在python中使用sklearn的“ continuous”
我有以下代码来测试sklearn python库的一些最流行的ML算法: import numpy as np from sklearn import metrics, svm from sklearn.linear_model import LinearRegression from sklearn.linear_model import LogisticRegression from sklearn.tree import DecisionTreeClassifier from sklearn.neighbors import KNeighborsClassifier from sklearn.discriminant_analysis import LinearDiscriminantAnalysis from sklearn.naive_bayes import GaussianNB from sklearn.svm import SVC trainingData = np.array([ [2.3, 4.3, 2.5], [1.3, 5.2, 5.2], [3.3, 2.9, …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.