使用pandas和scikit-learn创建决策树:使用二进制矩阵/出现矩阵

我有一个数据集,它实际上是一些项目特征向量的出现矩阵。从理论上讲,这种表示形式有助于将机器学习算法应用于数据集,因为它是标准化的。

a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,class1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,class10,1,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,1,1,1,0,1,0,0,1,class20,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,class21,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,0,0,1,class3

但是,我似乎无法使用pandas和scikit-learn在Python中提供的算法。我没有看到任何例子。

数据集的格式如下。其中特征vector =[a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z],类变量位于文件末尾,显示类别(例如:’class1’、’class2’、’class3’)。

如何对这种类型的数据集应用决策树算法,如CART和朴素贝叶斯?(我只检查了scikit-learn库)


回答:

您需要为类/因变量使用整数,而不是字符串。

这是一个例子:

In [1]: # 这里我只是简单地映射,如果您有很多类,您可以使用正则表达式或其他方法df['class'] = df['class'].map({'class1':0, 'class2':1, 'class3':2})In [2]: dfOut[2]: a   b   ...     y   z   class0   1   ...     1   1   01   0   ...     0   1   12   0   ...     0   1   1 3   1   ...     0   1   2In [3]: # 将X(独立变量)和y(因变量,类)分开X = df.iloc[:,:-1]y = df['class']In [4]: # 现在您可以进行拟合等操作...from sklearn.naive_bayes import GaussianNBgnb = GaussianNB()result = gnb.fit(X,y)In [5]:y_pred = result.predict(X)y_predOut[5]: array([0, 1, 1, 2], dtype=int64)

我们看到它正确预测了类别(显然考虑到特征数量与样本大小相比(p>n))。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注