学生成绩预测模型_逻辑回归实战练习——根据学生成绩预测是否被录取,使用sigmoid函数
时间: 2023-05-26 17:07:10 浏览: 139
用机器学习的方法对学生成绩进行统计分析和预测。包括决策树算法、逻辑回归算法、随机森林算法等,用python.zip
5星 · 资源好评率100%
本实战练习的目的是通过逻辑回归模型预测一个学生是否被大学录取,使用的数据集是成绩单和录取情况。使用sigmoid函数将预测值转换为0到1之间的概率值,概率越高表示被录取的可能性越大。
步骤如下:
1. 导入所需的库
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
```
2. 导入数据集
```python
data = pd.read_csv('admission.csv')
data.head()
```
3. 数据预处理
将数据集分为特征和目标变量,将目标变量“Admitted”转换为0和1。
```python
X = data.iloc[:, :-1].values
y = data.iloc[:, -1].values
y = np.where(y=='Admitted', 1, 0)
```
拆分数据集成训练集和测试集。
```python
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
```
特征缩放:
```python
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
```
4. 训练逻辑回归模型
```python
from sklearn.linear_model import LogisticRegression
classifier = LogisticRegression(random_state=0, solver='lbfgs')
classifier.fit(X_train, y_train)
```
5. 预测测试集结果
```python
y_pred = classifier.predict(X_test)
```
6. 评估模型精度
```python
from sklearn.metrics import accuracy_score, confusion_matrix
accuracy_score(y_test, y_pred)
confusion_matrix(y_test, y_pred)
```
7. 绘制决策边界
```python
from matplotlib.colors import ListedColormap
X_set, y_set = sc.inverse_transform(X_train), y_train
X1, X2 = np.meshgrid(np.arange(start=X_set[:, 0].min() - 10, stop=X_set[:, 0].max() + 10, step=0.1),
np.arange(start=X_set[:, 1].min() - 100, stop=X_set[:, 1].max() + 100, step=0.1))
plt.contourf(X1, X2, classifier.predict(sc.transform(np.array([X1.ravel(), X2.ravel()]).T)).reshape(X1.shape),
alpha=0.75, cmap=ListedColormap(('red', 'green')))
plt.xlim(X1.min(), X1.max())
plt.ylim(X2.min(), X2.max())
for i, j in enumerate(np.unique(y_set)):
plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1],
c=ListedColormap(('red', 'green'))(i), label=j)
plt.title('Logistic Regression (Training set)')
plt.xlabel('Exam 1 score')
plt.ylabel('Exam 2 score')
plt.legend()
plt.show()
```
8. 生成一个新的输入数据,并预测它的录取概率
```python
new_data = [[45, 85], [30, 45], [85, 90], [70, 70]]
new_data = sc.transform(new_data)
new_pred = classifier.predict_proba(new_data)
print(new_pred)
```
输出为:
```
[[0.75930324 0.24069676]
[0.9770395 0.0229605 ]
[0.01242469 0.98757531]
[0.16356001 0.83643999]]
```
以上输出表示:对于每组新的输入数据,第一个数字表示未录取的概率,第二个数字表示录取的概率。
阅读全文