Результаты студентов на экзаменах

В этой статье описывается взаимосвязь между оценкой, которую может получить учащийся, и различными другими параметрами, главным образом, полом, этнической принадлежностью, уровнем образования родителей и различными другими параметрами.

Модель способна сопоставлять все вышеперечисленные параметры и может использоваться для определения того, являются ли вышеупомянутые параметры детерминированными для прогнозирования успеваемости учащегося.

Проект был выполнен Раджатом, Дереком, Девешем, Шраваном и Шарвилом в рамках стажировки по машинному обучению в Idos Consultants LLP под руководством доктора Даршана Ингла.

Ссылка на код доступна на GitHub:

https://github.com/Rajat123456789/Students-Performance-in-Exams-/blob/master/StudentPerformanceInExam.ipynb

Введение

Набор данных был получен с kaggle.com и в первую очередь предназначен для сбора данных студентов, обучающихся в Соединенных Штатах.

Ссылка на набор данных: https://www.kaggle.com/spscientist/students-performance-in-exams/tasks?taskId=280

Шаги

Как и большинство наборов данных, доступных на kaggle, этот набор данных также был чистым. Таким образом, мы можем сразу перейти к части реализации. Чистый набор данных — это набор данных без пропущенных значений, нулевой или нулевой. Если бы были пропущенные значения, нам пришлось бы пройти все обычные этапы очистки данных.

Таким образом, если ваш набор данных не является чистым, вы можете сначала очистить его, а затем, как правило, любой из следующих методов может сработать для вас. Только помните, что вы должны проверить все методы для своих наборов данных, и метод, который дает максимальную точность, — это тот, который следует использовать.

Мы применили логистическую регрессию и получили в наших системах точность обучения 0,752 и точность тестирования 0,708.

из sklearn.linear_model импортировать LogisticRegression

# создание модели
model = LogisticRegression()

# передача обучающих данных в модель
model.fit(x_train, y_train)

# предсказание результатов набора тестов
y_pred = model.predict(x_test)

# расчет точности классификации
print("Точность обучения:", model.score(x_train, y_train))
print("Точность тестирования:", model.score(x_test, y_test))
точность_тест = точность_оценка (y_test, y_pred)

Мы применили случайный лес и получили точность обучения 1,0 и точность тестирования 1,0 в наших системах.

из sklearn.ensemble импортировать RandomForestClassifier

# создание модели
model = RandomForestClassifier()

# передача обучающих данных в модель
model.fit(x_train, y_train)

# предсказание результатов x-теста
y_pred = model.predict(x_test)

# расчет точности

print(confusion_matrix(y_test,y_pred))
print(classification_report(y_test,y_pred))
точность_тест = показатель точности(y_тест, y_пред)
print("Точность обучения:", model.score( x_train, y_train))
print("Точность тестирования:", model.score(x_test, y_test))

Оценка точности 1,0 всегда хороша, но может случиться так, что для какого-то другого набора данных прямое применение Random Forest или любого другого алгоритма не даст вам этих результатов. В этом случае вы можете продолжить работу с другими алгоритмами. Возможно даже, что выполнение одного и того же кода в некоторых случаях даст разные результаты. Но обычно наблюдается, что как только вы получаете результаты точности около 0,85 или выше, вы можете просто остановиться. Итак, просто ради дальнейшего изучения, мы также попробовали некоторые другие алгоритмы, которые вы можете проверить ниже.

Я знаю, что это может быть немного сложно, но поверьте мне, это просто знание алгоритма, который следует применять в каждом конкретном случае.

Мы применили SVM и получили точность обучения 0,936 и точность тестирования 0,924 в наших системах.

из sklearn.svm import SVC
svclassifier = SVC(kernel= 'linear')
svclassifier.fit(x_train,y_train)
y_pred = svclassifier.predict(x_test)
из sklearn .metrics импорта classification_report, растерянность_матрица
print(confusion_matrix(y_test,y_pred))
print(classification_report(y_test,y_pred))
точность_тест = точность_оценка(y_тест, y_пред)

print("Точность обучения:", svclassifier.score(x_train, y_train))
print("Точность тестирования:", svclassifier.score(x_test, y_test))

Видите ли, как я уже сказал выше, даже если вы получаете оценку выше 0,85 в любом из алгоритмов, всегда полезно изучить все варианты и выбрать тот, у которого самый высокий балл. Согласились, что даже если бы мы сначала наткнулись на SVM, это был бы хороший результат, но в нашем случае здорово, что мы изучили другие лучшие варианты.

Мы применили дерево решений и получили точность обучения 1,0 и точность тестирования 1,0 в наших системах.

from sklearn.tree import DecisionTreeClassifier
classifier = DecisionTreeClassifier()
# введите здесь свой код
classifier.fit(x_train, y_train)

# делать прогнозы на основе тестовых данных
y_pred=classifier.predict(x_test)
print(confusion_matrix(y_test,y_pred))
print(classification_report(y_test,y_pred))
precision_test = показатель точности (y_test, y_pred)

print("Точность обучения:", classifier.score(x_train, y_train))
print("Точность тестирования:", classifier.score(x_test, y_test))

Мы применили KNN (K ближайших соседей) и получили точность обучения 0,82 и точность тестирования 0,676 в наших системах.

из sklearn.neighbors import KNeighborsClassifier
classifier = KNeighborsClassifier (n_neighbors = 5)
classifier.fit (x_train, y_train)

y_pred = классификатор.predict(x_test)

# Оценка алгоритма
из sklearn.metrics importclassification_report, путаница_матрица, точность_оценка
# введите здесь свой код

#from sklearn.metrics import Classification_report, Confusion_matrix, Accuracy_score
print("Матрица путаницы:\n",confusion_matrix(y_test,y_pred)",\n")
print("Отчет о классификации:\n" ,classification_report(y_test,y_pred)",\n")
точность_проверки = точность_показателя(y_тест, y_пред)

print(classification_report(y_test, y_pred))
print("Точность обучения:", classifier.score(x_train, y_train))
print("Точность тестирования:", classifier.score(x_test, y_test) )

Вывод

Оглядываясь назад, мы могли бы выбрать любой алгоритм, и результат был бы приемлемым, кроме KNN. Таким образом, основное эмпирическое правило заключается в том, чтобы применить все имеющиеся в вашем распоряжении алгоритмы и выбрать вариант с наивысшей точностью. Мы бы выбрали алгоритм случайного леса.