Jupyter Notebook中LogisticRegression输出异常仅显示类名求助
解决Logistic Regression训练后仅输出模型实例的问题
问题场景
在Jupyter Notebook中实现逻辑回归时,执行clf.fit(X_train,y_train)后,输出仅为LogisticRegression(),无预期的训练结果。相关代码如下:
import numpy as np import pandas as pd df = pd.read_csv('placement.csv') df.head() df.info() df = df.iloc[:,1:] df.head() import matplotlib.pyplot as plt plt.scatter(df['cgpa'],df['iq'],c=df['placement']) X = df.iloc[:,0:2] y = df.iloc[:,-1] from sklearn.model_selection import train_test_split X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.1) from sklearn.preprocessing import StandardScaler scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) from sklearn.linear_model import LogisticRegression clf = LogisticRegression() clf.fit(X_train,y_train) # 此处仅输出LogisticRegression()
原因与解决方法
核心原因:
clf.fit()方法的返回值是模型实例本身(即clf),Jupyter Notebook会自动打印最后一行代码的返回值,所以你看到的LogisticRegression()只是模型对象的字符串表示,并非训练失败。获取有效结果的操作:
- 查看模型训练得到的参数:调用
clf.coef_(特征权重)、clf.intercept_(截距项) - 对测试集进行预测:使用
clf.predict(X_test)生成预测结果 - 评估模型性能:通过
clf.score(X_train, y_train)/clf.score(X_test, y_test)查看准确率,或调用sklearn.metrics中的混淆矩阵、精确率等指标
- 查看模型训练得到的参数:调用
修改后的代码示例
在clf.fit()后添加以下代码即可获取有效输出:
# 查看模型参数 print("特征权重系数:", clf.coef_) print("模型截距项:", clf.intercept_) # 生成测试集预测结果 y_pred = clf.predict(X_test) # 计算测试集准确率 from sklearn.metrics import accuracy_score print("测试集准确率:", accuracy_score(y_test, y_pred)) # 查看训练集/测试集得分 print("训练集得分:", clf.score(X_train, y_train)) print("测试集得分:", clf.score(X_test, y_test))
- 隐藏模型实例输出:如果不想看到
LogisticRegression()的打印,只需在clf.fit(X_train,y_train)末尾添加分号:
clf.fit(X_train,y_train);
内容的提问来源于stack exchange,提问作者Partha Pratim Sarma
相关产品推荐
相关产品推荐

