我正在尝试使用 Sci-kit学习python库来分类一堆网址,以确定是否存在与用户个人资料相匹配的某些关键字。用户具有姓名,电子邮件地址......以及分配给他们的网址。我创建了一个txt,每个链接上的每个配置文件数据匹配的结果都是格式:
Name Email Address
0 1 0 =>Relavent
1 1 0 =>Relavent
0 1 1 =>Relavent
0 0 0 =>Not Relavent
0或1表示在页面上找到属性(每行是一个网页) 如何将这些数据提供给sci-kit,以便它可以用它来运行分类器?我看到的例子都有来自预定义的sch-kit库的数据,例如数字或虹膜,或者是以我已有的格式生成的。我只是不知道如何使用我必须提供给库的数据格式
上面是一个玩具示例,我有比3更多的功能
答案 0 :(得分:3)
所需数据为numpy
array(在本例中为“矩阵”),形状为(n_samples, n_features)
。
使用csv-file阅读numpy.genfromtxt
到正确格式的简单方法。另请参阅this thread。
让csv文件的内容(比如当前工作目录中的file.csv
)为:
a,b,c,target
1,1,1,0
1,0,1,0
1,1,0,1
0,0,1,1
0,1,1,0
要加载它我们
data = np.genfromtxt('file.csv', skip_header=True)
skip_header
设置为True
,以防止读取标题列(a,b,c,target
行)。有关详细信息,请参阅numpy's documentation。
加载数据后,需要根据输入数据格式进行一些预处理。预处理可能类似于拆分输入和目标(分类)或将整个数据集拆分为训练和验证集(用于交叉验证)。
要从输出(目标矢量)中分割输入(特征矩阵)
features = data[:, :3]
targets = data[:, 3] # The last column is identified as the target
对于上面给出的CSV数据,数组将使用如下:
features = array([[ 0, 1, 0],
[ 1, 1, 0],
[ 0, 1, 1],
[ 0, 0, 0]]) # shape = ( 4, 3)
targets = array([ 1, 1, 1, 0]) # shape = ( 4, )
现在将这些矩阵传递给估算器对象fit
函数。如果您正在使用流行的svm分类器,那么</ p>
>>> from sklearn.svm import LinearSVC
>>> linear_svc_model = LinearSVC()
>>> linear_svc_model.fit(X=features, y=targets)