📜  使用 Logistic 回归进行位置预测

📅  最后修改于: 2022-05-13 01:55:33.545000             🧑  作者: Mango

使用 Logistic 回归进行位置预测

先决条件:了解逻辑回归,使用Python进行逻辑回归

在本文中,我们将讨论如何使用 Logistic 回归算法基于各种学生属性来预测学生的安置状态。

安置对学生和教育机构非常重要。它可以帮助学生为未来的职业生涯奠定坚实的基础,并且良好的安置记录为大学/大学在教育市场上提供了竞争优势。

这项研究的重点是一个系统,该系统根据学生的资格、历史数据和经验来预测该学生是否会被安置。该预测器使用机器学习算法给出结果。

使用的算法是逻辑回归。逻辑回归基本上是一种监督分类算法。在分类问题中,目标变量(或输出)y 只能为给定的一组特征(或输入)X 取离散值。谈到数据集,它包含中学百分比、高中百分比、学位学生的百分比、学位和工作经验。在预测结果后,它的效率也基于数据集计算。此处使用的数据集采用.csv格式。

以下是分步方法:

第一步:导入需要的模块。

Python
# import modules
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt


Python
# reading the file
dataset = pd.read_csv('Placement_Data_Full_Class.csv')
dataset


Python
# dropping the serial no and salary col
dataset = dataset.drop('sl_no', axis=1)
dataset = dataset.drop('salary', axis=1)


Python
# catgorising col for further labelling
dataset["gender"] = dataset["gender"].astype('category')
dataset["ssc_b"] = dataset["ssc_b"].astype('category')
dataset["hsc_b"] = dataset["hsc_b"].astype('category')
dataset["degree_t"] = dataset["degree_t"].astype('category')
dataset["workex"] = dataset["workex"].astype('category')
dataset["specialisation"] = dataset["specialisation"].astype('category')
dataset["status"] = dataset["status"].astype('category')
dataset["hsc_s"] = dataset["hsc_s"].astype('category')
dataset.dtypes


Python
# labelling the columns
dataset["gender"] = dataset["gender"].cat.codes
dataset["ssc_b"] = dataset["ssc_b"].cat.codes
dataset["hsc_b"] = dataset["hsc_b"].cat.codes
dataset["degree_t"] = dataset["degree_t"].cat.codes
dataset["workex"] = dataset["workex"].cat.codes
dataset["specialisation"] = dataset["specialisation"].cat.codes
dataset["status"] = dataset["status"].cat.codes
dataset["hsc_s"] = dataset["hsc_s"].cat.codes
 
# display dataset
dataset


Python
# selecting the features and labels
X = dataset.iloc[:, :-1].values
Y = dataset.iloc[:, -1].values
 
# display dependent variables
Y


Python
# dividing the data into train and test
from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(X, Y,
                                                    test_size=0.2)
 
# display dataset
dataset.head()


Python
# creating a classifier using sklearn
from sklearn.linear_model import LogisticRegression
 
clf = LogisticRegression(random_state=0, solver='lbfgs',
                         max_iter=1000).fit(X_train,
                                            Y_train)
# printing the acc
clf.score(X_test, Y_test)


Python
# predicting for random value
clf.predict([[0, 87, 0, 95, 0, 2, 78, 2, 0, 0, 1, 0]])


Python
# creating a Y_pred for test data
Y_pred = clf.predict(X_test)
 
# display predicted values
Y_pred


Python
# evaluation of the classifier
from sklearn.metrics import confusion_matrix, accuracy_score
 
# display confusion matrix
print(confusion_matrix(Y_test, Y_pred))
 
# display accuracy
print(accuracy_score(Y_test, Y_pred))


第 2 步:现在读取我们将用于分析的数据集,然后检查数据集。

Python

# reading the file
dataset = pd.read_csv('Placement_Data_Full_Class.csv')
dataset

输出:

第 3 步:现在我们将删除不需要的列。

Python

# dropping the serial no and salary col
dataset = dataset.drop('sl_no', axis=1)
dataset = dataset.drop('salary', axis=1)

第 4 步:现在在继续之前,我们需要预处理和转换我们的数据。为此,我们将在某些列上使用astype()方法并将数据类型更改为category

Python

# catgorising col for further labelling
dataset["gender"] = dataset["gender"].astype('category')
dataset["ssc_b"] = dataset["ssc_b"].astype('category')
dataset["hsc_b"] = dataset["hsc_b"].astype('category')
dataset["degree_t"] = dataset["degree_t"].astype('category')
dataset["workex"] = dataset["workex"].astype('category')
dataset["specialisation"] = dataset["specialisation"].astype('category')
dataset["status"] = dataset["status"].astype('category')
dataset["hsc_s"] = dataset["hsc_s"].astype('category')
dataset.dtypes

输出:

第 5 步:现在我们将在其中一些列上应用代码,将它们的文本值转换为数值。

Python

# labelling the columns
dataset["gender"] = dataset["gender"].cat.codes
dataset["ssc_b"] = dataset["ssc_b"].cat.codes
dataset["hsc_b"] = dataset["hsc_b"].cat.codes
dataset["degree_t"] = dataset["degree_t"].cat.codes
dataset["workex"] = dataset["workex"].cat.codes
dataset["specialisation"] = dataset["specialisation"].cat.codes
dataset["status"] = dataset["status"].cat.codes
dataset["hsc_s"] = dataset["hsc_s"].cat.codes
 
# display dataset
dataset

输出:

第 6 步:现在使用iloc()函数将数据集拆分为特征和值:

Python

# selecting the features and labels
X = dataset.iloc[:, :-1].values
Y = dataset.iloc[:, -1].values
 
# display dependent variables
Y

输出:

第 7 步:现在我们将数据集拆分为训练和测试数据,这些数据将用于稍后检查效率。

Python

# dividing the data into train and test
from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(X, Y,
                                                    test_size=0.2)
 
# display dataset
dataset.head()

输出:

第 8 步:现在我们需要训练我们需要导入文件的模型,然后我们将使用sklearn模块创建一个分类器。然后我们将检查模型的准确性。

Python

# creating a classifier using sklearn
from sklearn.linear_model import LogisticRegression
 
clf = LogisticRegression(random_state=0, solver='lbfgs',
                         max_iter=1000).fit(X_train,
                                            Y_train)
# printing the acc
clf.score(X_test, Y_test)

输出:

第 9 步:一旦我们训练了模型,我们将检查它并给出一些随机值:

Python

# predicting for random value
clf.predict([[0, 87, 0, 95, 0, 2, 78, 2, 0, 0, 1, 0]])

输出:

第 10 步:为了更细致地了解我们模型的性能,我们需要制作一个混淆矩阵。混淆矩阵是一个包含两行两列的表格,用于报告假阳性、假阴性、真阳性和真阴性的数量。

要获得混淆矩阵,它需要两个参数:测试集y_test的实际标签和预测标签。分类器的预测标签存储在y_pred中,如下所示:

Python

# creating a Y_pred for test data
Y_pred = clf.predict(X_test)
 
# display predicted values
Y_pred

输出:

第 11 步:最后,我们有了y_pred,因此我们可以生成混淆矩阵:

Python

# evaluation of the classifier
from sklearn.metrics import confusion_matrix, accuracy_score
 
# display confusion matrix
print(confusion_matrix(Y_test, Y_pred))
 
# display accuracy
print(accuracy_score(Y_test, Y_pred))

输出: