如何使用 dictVectorize 和使用模型转换新的输入数据?
How to transform new input data using dictVectorize and using the model?
我正在使用 dict vectorize 将我的分类变量转换为稀疏矩阵。然后使用逻辑回归和随机森林来训练模型。我的问题是,下次有新的数据进来,如何将其转化为稀疏矩阵框,然后使用训练好的模型进行预测?
这是我的代码示例:
dv_x, y = dictVectorizeData(inputData, header)
# dv_x is a <740051x1112 sparse matrix of type '<type 'numpy.float64'>'
# with 9620663 stored elements in Compressed Sparse Row format>
lr_cv = LogisticRegressionCV(penalty='l1', solver='liblinear', Cs=[10**i for i in range(-4,2)], cv=5, refit=True)
lr_cv.fit(dv_X, Y)
现在有一个新的数据,格式如下:
{
'banner_position': '0',
'connspeed': 'broadband',
'creative_format': '728x90',
'creative_id': '4688677',
'day_hour_etc': '1',
'domain': 'cdn.bitmedianetwork.com',
'exch': 'cox',
'home_bus': 'business',
'is_mobile': 'non-mobile',
'os_family': 'windows',
'os_major': '8',
'ua_family': 'ie',
'ua_major': '9'
}
我假设 dictVectorizeData
是您定义的调用 sklearn.feature_extraction.DictVectorizer
的函数。要转换新数据,您需要访问此 DictVectorizer
实例。
例如:
from sklearn.feature_extraction import DictVectorizer
vec = DictVectorizer()
X = vec.fit_transform(input_data)
from sklearn.linear_model import LogisticRegressionCV
lr_cv = LogisticRegressionCV()
lr_cv.fit(X, y_input)
X_new = vec.transform(new_data)
y_new = lr_cv.predict(X_new)
因为总是必须手动转换输入有点乏味,创建一个 pipeline 来自动执行此操作通常更容易:
from sklearn.pipeline import make_pipeline
pipe = make_pipeline(DictVectorizer(), LogisticRegressionCV())
pipe.fit(input_data, y_input)
y_new = pipe.predict(new_data)
此处的y_new
结果等同于第一个代码块中的结果。
我正在使用 dict vectorize 将我的分类变量转换为稀疏矩阵。然后使用逻辑回归和随机森林来训练模型。我的问题是,下次有新的数据进来,如何将其转化为稀疏矩阵框,然后使用训练好的模型进行预测?
这是我的代码示例:
dv_x, y = dictVectorizeData(inputData, header)
# dv_x is a <740051x1112 sparse matrix of type '<type 'numpy.float64'>'
# with 9620663 stored elements in Compressed Sparse Row format>
lr_cv = LogisticRegressionCV(penalty='l1', solver='liblinear', Cs=[10**i for i in range(-4,2)], cv=5, refit=True)
lr_cv.fit(dv_X, Y)
现在有一个新的数据,格式如下:
{
'banner_position': '0',
'connspeed': 'broadband',
'creative_format': '728x90',
'creative_id': '4688677',
'day_hour_etc': '1',
'domain': 'cdn.bitmedianetwork.com',
'exch': 'cox',
'home_bus': 'business',
'is_mobile': 'non-mobile',
'os_family': 'windows',
'os_major': '8',
'ua_family': 'ie',
'ua_major': '9'
}
我假设 dictVectorizeData
是您定义的调用 sklearn.feature_extraction.DictVectorizer
的函数。要转换新数据,您需要访问此 DictVectorizer
实例。
例如:
from sklearn.feature_extraction import DictVectorizer
vec = DictVectorizer()
X = vec.fit_transform(input_data)
from sklearn.linear_model import LogisticRegressionCV
lr_cv = LogisticRegressionCV()
lr_cv.fit(X, y_input)
X_new = vec.transform(new_data)
y_new = lr_cv.predict(X_new)
因为总是必须手动转换输入有点乏味,创建一个 pipeline 来自动执行此操作通常更容易:
from sklearn.pipeline import make_pipeline
pipe = make_pipeline(DictVectorizer(), LogisticRegressionCV())
pipe.fit(input_data, y_input)
y_new = pipe.predict(new_data)
此处的y_new
结果等同于第一个代码块中的结果。