【保存版】Pythonで生徒の成績を予測するAIを作ってみた|教師あり学習で実践!

プログラミング

学校や塾で「この生徒はどれくらいの成績を取るのか?」と悩む場面はよくあります。もし事前に成績を予測できれば、学習指導やサポートをもっと的確に行えるはずです。

この記事では、Pythonと教師あり学習を使って、生徒の成績を予測するAIモデルの作り方をやさしく解説します。必要なライブラリから環境構築、データの前処理、モデル学習、予測の実行まで、小学生にもわかる表現と具体的なコードでご紹介。

AI初心者でも「これならできそう」と感じてもらえるよう、丁寧に進めていきます。

生徒の成績予測とは何か?

結論

生徒の成績予測とは、過去の学習データから未来の成績を推定する技術です。

理由

生徒の成績は、提出物の達成度、授業態度、過去のテスト結果などから影響を受けます。これらのデータを学習させることで、将来の点数を予測できるようになります。

具体例

• 小テストの点数や課題提出状況から期末試験の点数を予測

• 通知表の変動パターンから学年末の総合評価を予測

• 学力推移から受験校選びの参考にする

再主張

成績の予測は、教育現場における個別最適な指導の実現に貢献します。

Python環境の準備とライブラリ導入

結論

Pythonの仮想環境を作成し、必要なライブラリをインストールすれば準備完了です。

手順

1. 仮想環境の作成(Windows/Mac共通)

1
python -m venv predict-env

2. 仮想環境を有効化

• Windows

1
predict-env\Scripts\activate

• Mac/Linux

1
source predict-env/bin/activate

3. 必要なライブラリのインストール

1
pip install pandas numpy matplotlib scikit-learn

ポイント

pandas:表データの扱いに便利

scikit-learn:機械学習モデルを構築するためのライブラリ

再主張

環境が整えば、すぐにAIを実装できます。

データの読み込みと前処理

結論

教師あり学習では、「特徴(input)」と「正解(output)」がペアになったデータが必要です。

使用データ例(生徒の情報)

hours_studyattendancetest_score
39070
510088
16045

コード例

1
2
3
4
5
6
7
8
9
10
import pandas as pd
 
data = pd.DataFrame({
    'hours_study': [3, 5, 1, 2, 4],
    'attendance': [90, 100, 60, 70, 95],
    'test_score': [70, 88, 45, 50, 85]
})
 
X = data[['hours_study', 'attendance']]  # 特徴量
y = data['test_score']                   # 正解ラベル

再主張

教師あり学習では「入力と出力のセット」が不可欠です。

教師あり学習モデルの構築

結論

教師あり学習では、データを元に予測モデルを学習させます。

使用するアルゴリズム:線形回帰

1
2
3
4
5
6
7
from sklearn.linear_model import LinearRegression
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)
 
model = LinearRegression()
model.fit(X_train, y_train)

ポイント

train_test_splitでデータを8:2に分割

fit()関数で学習

再主張

線形回帰は予測値が数値のときに強力な手法です。

実際に成績を予測してみよう

結論

学習済みモデルにデータを渡せば、成績を予測できます。

1
2
3
new_student = [[4, 92]]  # 勉強時間4時間、出席率92%
predicted_score = model.predict(new_student)
print(f"予測される点数: {predicted_score[0]:.1f}")

結果例

1
予測される点数: 82.4

再主張

ほんの数行で、未来の点数が予測可能になります。

精度の評価と今後の活用

結論

AIがどれだけ正確に予測できたかを数値で確認しましょう。

評価方法:平均二乗誤差(MSE)

1
2
3
4
5
from sklearn.metrics import mean_squared_error
 
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print(f"MSE: {mse:.2f}")

評価の意味

MSEが小さいほど、予測が現実に近い

• 通常、10以下であればまずまず精度が良いと判断

再主張

精度の可視化はAIの信頼性を高める鍵です。

FAQ(よくある質問)

Q1. 学習データが少ないときはどうすれば?

A. データ量が少ないと精度が下がるため、教師データを増やすか、データ拡張(重複や合成)を活用しましょう。

Q2. テストの点数以外も予測できますか?

A. もちろん可能です。出席日数、提出物の数、総合評価など、数値で表せるものであれば対応できます。

Q3. ランダムフォレストやXGBoostも使えますか?

A. はい。より高精度な予測を求める場合は、それらのアルゴリズムも有効です。

まとめ

要点

• 教師あり学習を使えば、生徒の成績を事前に予測できる

• 特徴量と正解のペアが必要

• Python + scikit-learnで簡単に実装可能

応用先

• 教育現場での指導計画

• 成績が伸び悩む生徒へのアラート

• 保護者との面談資料としての活用

タイトルとURLをコピーしました