有什么办法在大熊猫中构建有效的特征矩阵进行二进制分类?

时间:2019-04-28 17:42:45

标签: python scikit-learn

我合并了有关芝加哥犯罪率和房屋销售分布的数据框。我想为此数据建立一个有效的特征矩阵。但是,我对如何从该数据集中构造特征矩阵有些困惑,因为我想对数据使用Python 2.7logistic regression这样的二进制分类,但是我不知道应该采用哪种方法构造特征矩阵。有人给我可能的外卖吗?谢谢

可复制的数据

SVM

这是我所做的

test_df= pd.DataFrame({'Year': ['2012', '2013', '2014', '2015', '2012', '2013', '2014', '2015', '2012', '2013', '2014', '2015'], 
                       'Theft': [100,200,300,230, 20,34,56, 65, 43,56,79,109],
                       'Robbery': [100,200,300,230, 20,34,56, 65, 43,56,79,109],
                       'Assult': [102,230,320,235, 201,343,90, 106, 143,156,179,102],
                     'Area': ['Chicago, IL metro area', 'Chicago, IL metro area', 'Chicago, IL metro area', 'Chicago, IL metro area', 'Chicago, IL', 'Chicago, IL', 'Chicago, IL', 'Chicago, IL', 'Chicago, IL - Albany Park', 'Chicago, IL - Albany Park', 'Chicago, IL - Albany Park', 'Chicago, IL - Albany Park'],
                     'yearly_sale_percentage': ['5%', '10%', '7%','21%', '15%', '12%', '2%','21%', '10%', '11%', '12%','6%'],
                     'price_status':[0, 1, 0,1,1,1,0,1,1,1,1,0]})

但是我没有正确选择功能,因为我的数据是按年份划分的。如何处理以上数据框并为二进制分类问题建立有效的特征矩阵?任何有效的解决方案?谢谢

目标

我想根据price_status训练SVM分类器不同类型的犯罪。有更好的主意吗?

1 个答案:

答案 0 :(得分:0)

这里不需要TF-IDF。

您必须预测price_status,因此这将是您的目标列,而所有其他列将在您的要素矩阵中。在将其他列直接提供给svm之前,我们必须处理这些列。 (所有必须转换为数字)。 Area列是一个分类变量(看起来像这样)。我们可以对Area列进行标签编码或一种热编码。 yearly_sale_percentange列包含百分号(%)。删除百分号将完成我们的工作。

# label encoding the area column, you can do one hot encoding also.
test_df['Area']=pd.factorize(test_df['Area'])[0]

# removing the percentage sign
test_df['yearly_sale_percentage']=test_df['yearly_sale_percentage'].apply(lambda x:float(x[:-1]))

在此之后,我们可以创建特征矩阵,然后将其提供给svm。

X=train.iloc[:,:-1].values   # all columns expect the last column(price status)
y=train['price_status'].values

clf=sklearn.svm.SVC()
clf.fit(X,y)

# you can also check the accuracy score as shown below.
print(clf.score(X,y))