Python 不同维数输入数据的SGD分类器部分拟合学习
我正在尝试对一个热编码数据执行SGD分类。我对我的培训示例进行了拟合,希望稍后对较少的数据执行部分拟合。 我理解由于拟合数据和部分拟合数据之间的维度更改而引发的错误 我也知道我需要在我的Python 不同维数输入数据的SGD分类器部分拟合学习,python,machine-learning,scikit-learn,classification,Python,Machine Learning,Scikit Learn,Classification,我正在尝试对一个热编码数据执行SGD分类。我对我的培训示例进行了拟合,希望稍后对较少的数据执行部分拟合。 我理解由于拟合数据和部分拟合数据之间的维度更改而引发的错误 我也知道我需要在我的hot\u new\u df上执行数据转换,但我不确定如何进行 在[29]--中,我正在做一个fit() 在[32]--中,我正在做一个partial\u fit() 我刚才给出了一个假设的例子。。。我的实际数据超过了40K行~200列的形状 Jupyter QtConsole 4.3.1 Python 3.6
hot\u new\u df
上执行数据转换,但我不确定如何进行
在[29]--中,我正在做一个fit()
在[32]--中,我正在做一个partial\u fit()
我刚才给出了一个假设的例子。。。我的实际数据超过了40K行~200列的形状
Jupyter QtConsole 4.3.1
Python 3.6.2 |蟒蛇自定义(64位)|(默认值,2017年9月21日,18:29:43)
有关详细信息,请键入“版权”、“信用”或“许可证”
IPython 6.1.0——一种增强的交互式Python。键入“?”以获取帮助。
在[27]中:导入熊猫作为pd
...:
…:input_df=pd.DataFrame(dict(水果=['Apple','Orange','Pine'],
…:颜色=[“红色”、“橙色”、“绿色”],
…:is_sweet=[0,0,1],
…:国家=[“美国”、“印度”、“亚洲”],
…:is_valid=['valid','valid','Invalid']))
…:输入_df
出[27]:
颜色乡村水果是甜的是有效的
0红色美国苹果0有效
1橙色印度橙色0有效
2青松1号无效
在[28]中:hot_df=pd.get_dummies(输入_df,列=['fruit','color','country'])
…:热的
出[28]:
是甜是有效的水果苹果水果橘子水果松树颜色绿色\
0 0有效1 0 0 0 0
1 0有效的0 1 0 0
2 1无效的0 1 1 1
颜色橙色红色国家亚洲国家印度国家美国
0 0 1 0 0 1
1 1 0 0 1 0
2 0 0 1 0 0
在[29]:从sklearn.linear_模型导入SGDClassizer
…:从sklearn.model\u选择导入列车\u测试\u拆分
...:
…:X_系列,X_测试,y_系列,y_测试=系列测试分割(热测向下降(['is_valid'],轴=1),
…:hot_df['is_valid'],
…:测试尺寸=0.1)
…:clf=sgdclassizer(loss=“log”,罚金=“l2”)
…:clf.fit(X_系列,y_系列)
…:clf
/Users/praj3/anaconda3/lib/python3.6/site packages/sklearn/linear_model/random_gradient.py:84:FutureWarning:max_iter和tol参数已添加到0.19中。如果两者都未设置,则默认为max_iter=5和tol=None。如果tol不是None,则max_iter默认为max_iter=1000。从0.21开始,默认最大iter为1000,默认tol为1e-3。
“和默认tol将为1e-3。”%类型(自我),未来警告)
出[29]:
SGDClassizer(α=0.0001,平均值=False,等级权重=None,ε=0.1,
eta0=0.0,拟合截距=真,l1_比率=0.15,
学习速率=最优,损耗=对数,最大iter=5,n\U iter=无,
n_作业=1,惩罚=l2',功率=0.5,随机状态=None,
shuffle=True,tol=None,verbose=0,warm\u start=False)
在[30]中:new_df=pd.DataFrame(dict(fruit=['Banana']),
…:颜色=[“红色”],
…:is_sweet=[1],
…:国家=[“印度”],
…:is_valid=['Invalid']))
…:新的
出[30]:
颜色乡村水果是甜的是有效的
0红色印度香蕉1无效
在[31]中:hot\u new\u df=pd.get\u dummies(new\u df,columns=['fruit'、'color'、'country')
…:热的新的
出[31]:
是甜是有效的水果是香蕉的颜色是红色的国家是印度
0 1无效1
在[32]中:clf.部分拟合(热新测向下降(['is\u valid'],axis=1),热新测向['is\u valid']))
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在()
---->1 clf.部分配合(热新测向下降(['is\u valid'],轴=1),热新测向['is\u valid']))
部分拟合中的~/anaconda3/lib/python3.6/site-packages/sklearn/linear\u model/randomic\u gradient.py(自我、X、y、类、样本重量)
543学习率=自学习率,最大学习率=1,
544类=类,样本重量=样本重量,
-->545 coef_init=None,intercept_init=None)
546
547 def fit(自身、X、y、coef_init=无、截距_init=无、,
~/anaconda3/lib/python3.6/site-packages/sklearn/linear\u model/randomic\u gradient.py in\u partial\u fit(self,X,y,alpha,C,loss,learning\u rate,max\u iter,class,sample\u weight,coef\u init,intercept\u init)
381 elif n_features!=self.coef_.shape[-1]:
382 raise VALUE ERROR(“功能%d的数量与以前的不匹配”
-->383“数据%d.”%(n_特征,自系数形状[-1]))
384
385 self.loss\u函数=self.\u get\u loss\u函数(loss)
ValueError:功能数4与以前的数据10不匹配。
在[33]:中,您应该使用
sklearn.preprocessing.onehotcoder
。可以找到相关文档
在编码前进行列车测试分割,使用情况如下:
from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder()
encoder.fit(X_train)
X_train = encoder.transform(X_train)
X_test = encoder.transform(X_test)
我希望这能有所帮助!我建议使用sklearn的工具进行一次热编码(而不是熊猫)。然后你得到了一个编码器类,它可以
转换
其他数据。@sascha,你能建议如何用示例进行转换吗?我可以使用sklearn one热编码,我试过使用OneHotEncod