将CSV文件导入python,然后将其转换为numpy数组,然后将其提供给sklearn算法

问题描述 投票:0回答:1

Sklearn算法需要一个功能和标签才能学习。

我有一个包含一些数据的CSV文件。这些数据实际上是来自hackerearth网站的挑战,其中参与者需要创建一种学习算法,该算法可以从联盟网络中获取大量个人数据及其广告点击性能,然后预测联盟网络中其他个人的未来表现,公司优化广告效果。

这些数据中的功能包括ID,日期,siteid,offerid,类别,商家,国家/地区代码,浏览器类型,设备类型以及广告获得的点击次数。

https://www.hackerearth.com/practice/algorithms/string-algorithm/string-searching/practice-problems/machine-learning/predict-ad-clicks/

所以我的计划是使用前7个信息作为我的功能,广告点击作为标签。不幸的是,国家/地区代码,浏览器和设备信息是文本(Google Chrome,桌面),而不是可以转换为数组的整数。

Q1:sklearn是否有办法不仅接受numpy数组而且还接受单词作为功能?我支持使用矢量化器吗?如果是这样,我该怎么做?如果没有,我可以将措辞数据替换为数字(Google Chrome替换为1,firefox替换为2)并仍然可以使用吗? (我使用朴素贝叶斯算法)

Q2:朴素贝叶斯算法是否适合这项任务?由于此次竞赛要求参与者创建一个程序来预测联盟网络中的个人点击广告的可能性,我认为Naive Bayes最适合。

训练数据:https://drive.google.com/open?id=1vWdzm0uadoro3WcpWmJ0SVEebeaSsHvr

测试数据:https://drive.google.com/open?id=1M8gR1ZSpNEyVi5W19y0d_qR6EGUeGBQl

我对这个挑战的混乱编码和可怕的尝试我认为不会有多大帮助:

from sklearn.naive_bayes import GaussianNB
import csv
import pandas as pd
import numpy as np
data = []
from numpy import genfromtxt
import pandas as pd
data = genfromtxt('smaller.csv', delimiter=',')
dat = pd.read_csv('smaller.csv', delimiter=',')
print(dat(siteid))

feature = []
label =[]
i = 1
j = 1

while i <17:
    feature.append(data[i][2:8])
    i += 1
while j <17:
    label.append(data[i][9])
    j += 1
clf = GaussianNB()

clf.fit(feature,label)
print(clf.predict([data[18][2:8]]))
print(data[18])
arrays csv machine-learning scikit-learn naivebayes
1个回答
1
投票

Question1的答案:不.Sklearn仅适用于数值数据。所以你需要将文本转换为数字。

现在要将文本转换为数字,您可以遵循多种方法。首先是你说的只是为他们分配数字。但是,如果文本数据显示任何顺序(如分配给它们的数字),则需要考虑。在这种情况下,通常使用单热编码。请参阅下面的scikit-learn文档: - http://scikit-learn.org/stable/modules/preprocessing.html#encoding-categorical-features

对问题2的回答:这取决于手头的数据和任务。

没有一种算法能够以最佳方式处理每种类型的数据。

希望这能清除你的疑虑。请务必查看scikit-learn文档和示例:

他们是那里最好的之一。

© www.soinside.com 2019 - 2024. All rights reserved.