我合并了有关芝加哥犯罪率和房屋销售分布的数据框。我想为此数据建立一个有效的特征矩阵。但是,我对如何从该数据集中构造特征矩阵有些困惑,因为我想对数据使用Python 2.7
,logistic 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分类器不同类型的犯罪。有更好的主意吗?
答案 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))