我有一堆带文章的文件.对于每篇文章,应该有一些功能,例如:文本长度,text_spam(所有都是整数或浮点数,在大多数情况下,它们应该从csv加载).我想要做的是 - 将这些功能与CountVectorizer相结合,然后对这些文本进行分类.
我看了一些教程,但我仍然不知道如何实现这些东西.在这里找到了一些东西,但实际上并不能满足我的需求.
任何想法如何用scikit完成?
谢谢.
我现在遇到的是:
from sklearn.feature_extraction import DictVectorizer
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.pipeline import FeatureUnion
measurements = [
{'text_length': 1000, 'text_spam': 4.3},
{'text_length': 2000, 'text_spam': 4.1},
]
corpus = [
'some text',
'some text 2 hooray',
]
vectorizer = DictVectorizer()
count_vectorizer = CountVectorizer(min_df=1)
first_x = vectorizer.fit_transform(measurements)
second_x = count_vectorizer.fit_transform(corpus)
combined_features = FeatureUnion([('first', first_x), ('second', second_x)])
Run Code Online (Sandbox Code Playgroud)
对于这一堆代码,我不明白如何加载"真实"数据,因为已经加载了训练集.第二个 - 如何加载类别(适合函数的y参数)?
我正在尝试构建一个GeoJSON对象.我的输入是一个带有地址列,lat列和lon列的csv.然后,我从坐标中创建了Shapely点,用给定的半径缓冲它们,并通过映射选项获得坐标字典 - 到目前为止,非常好.然后,在提到这个问题后,我编写了以下函数来获得一系列字典:
def make_geojson(row):
return {'geometry':row['geom'], 'properties':{'address':row['address']}}
我这样应用了它:
data['new_output'] = data.apply(make_geojson, axis=1)
Run Code Online (Sandbox Code Playgroud)
我的结果列充满了以下内容: <built-in method values of dict object at 0x10...
最奇怪的部分是,当我直接调用函数(即make_geojson(data.loc[0])我其实做得到我期待字典.甚至离奇的是,当我打电话,我从得到的功能应用(例如data.output[0](),data.loc[0]['output']())我得到的相当于以下列表:
[data.loc[0]['geom'], {'address':data.loc[0]['address']}],即我想要获得的字典的值(但不是键).
对于那些在家里玩的人来说,这是一个玩具示例:
from shapely.geometry import Point, mapping
import pandas as pd
def make_geojson(row):
return {'geometry':row['geom'], 'properties':{'address':row['address']}}
data = pd.DataFrame([{'address':'BS', 'lat':34.017, 'lon':-117.959}, {'address':'BS2', 'lat':33.989, 'lon':-118.291}])
data['point'] = map(Point, zip(data['lon'], data['lat']))
data['buffer'] = data['point'].apply(lambda x: x.buffer(.1))
data['geom'] = data.buffer.apply(mapping)
data['output'] = data.apply(make_geojson, axis=1)
Run Code Online (Sandbox Code Playgroud)