Python 如何从变量生成数据帧?
我有一个这样打印的代码:Python 如何从变量生成数据帧?,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个这样打印的代码: print('Logistic Regression') print('Data Train :', logreg.score(X,y)) print('Data Test :', logreg.score(X_test,y_test)) print('KNN') print('Data Train :', knn.score(X,y)) print('Data Test :', knn.score(X_test,y_test)) 输出为: Logistic Regr
print('Logistic Regression')
print('Data Train :', logreg.score(X,y))
print('Data Test :', logreg.score(X_test,y_test))
print('KNN')
print('Data Train :', knn.score(X,y))
print('Data Test :', knn.score(X_test,y_test))
输出为:
Logistic Regression
Data Train : 0.7171072127066912
Data Test :
0.7219339324136186
KNN
Data Train : 0.9711521365495169
Data Test : 0.8530565751170738
如何使其成为这样的数据帧:
print('Logistic Regression')
print('Data Train :', logreg.score(X,y))
print('Data Test :', logreg.score(X_test,y_test))
print('KNN')
print('Data Train :', knn.score(X,y))
print('Data Test :', knn.score(X_test,y_test))
对数几率回归
KNN
数据列
0.7171072127066912
0.9711521365495169
数据测试
0.7219339324136186
0.8530565751170738
通过列表理解,您可以轻松做到这一点
models = [logreg, knn]
model_names = ['Logistic Regression', 'KNN']
pd.DataFrame(
data=[
[model.score(a, b) for (a,b) in [(X, y), (X_test, y_test)]]
for model in models
], index=['Data Train', 'Data Test'], columns=model_names)
当你想包含更多的模型时,你只需更新你的模型
和模型名称
变量即可
models = [logreg, knn, dt, rf, xgb]
model_names = ['Logistic Regression', 'KNN', 'Decision Tree', 'Random Forest', 'XGBoost']
并保持后面的部分完全相同。通过列表理解,您可以轻松做到这一点
models = [logreg, knn]
model_names = ['Logistic Regression', 'KNN']
pd.DataFrame(
data=[
[model.score(a, b) for (a,b) in [(X, y), (X_test, y_test)]]
for model in models
], index=['Data Train', 'Data Test'], columns=model_names)
当你想包含更多的模型时,你只需更新你的模型
和模型名称
变量即可
models = [logreg, knn, dt, rf, xgb]
model_names = ['Logistic Regression', 'KNN', 'Decision Tree', 'Random Forest', 'XGBoost']
并保持后一部分完全相同。如果只有这两种型号,您可以使用:
将熊猫作为pd导入
df=pd.DataFrame({“逻辑回归”:[logreg.score(X,y),logreg.score(X_检验,y_检验)],“KNN”:[KNN.score(X,y),KNN.score(X_检验,y_检验)],指数=[“数据序列”,“数据检验])
如果只有这两种型号,您可以使用:
将熊猫作为pd导入
df=pd.DataFrame({“逻辑回归”:[logreg.score(X,y),logreg.score(X_检验,y_检验)],“KNN”:[KNN.score(X,y),KNN.score(X_检验,y_检验)],指数=[“数据序列”,“数据检验])
谢谢,工作很好。但是它只能有2个变量,如何使用更多的变量呢?我尝试过:pd.DataFrame(数据=[[model.score(a,b,c,d,e)for(a,b,c,d,e)in[(X,y),(X_检验,y_检验)]]for[logreg,knn,dt,rf,xgb]]中的模型,索引=['data Train',data test'],列=['Logistic回归','knn','Decision Tree','Random Forest','XGBoost'])这个想法是正确的,但我想你在定义上有点迷失了。正如您在我所写的答案中看到的,各个模型采用变量model
。因此,内部列表不会更改,只需附加model
变量。让我更新我的答案更清楚。谢谢,工作完美。但是它只能有2个变量,如何使用更多的变量呢?我尝试过:pd.DataFrame(数据=[[model.score(a,b,c,d,e)for(a,b,c,d,e)in[(X,y),(X_检验,y_检验)]]for[logreg,knn,dt,rf,xgb]]中的模型,索引=['data Train',data test'],列=['Logistic回归','knn','Decision Tree','Random Forest','XGBoost'])这个想法是正确的,但我想你在定义上有点迷失了。正如您在我所写的答案中看到的,各个模型采用变量model
。因此,内部列表不会更改,只需附加model
变量。让我更新我的答案,使之更清楚。