Pythonで線形回帰分析をやってみよう【scikit-learn入門・2026年最新版】
🎯 はじめに
📅 最終更新:2026年4月26日(新規公開)
✅ Python 3.11以上 / scikit-learn 1.4で動作確認
✅ コピペで動くサンプルコード掲載
✅ Google Colab / Jupyter Notebook対応
✅ 実データを使った演習形式
✅ モデル評価・可視化まで完全カバー
「線形回帰、Excelでは試したけど次はPythonでやってみたい」「scikit-learnって難しそう…」
そう思っている人、安心してね。実はscikit-learnでの線形回帰は、たった数行のコードで実装できるほどシンプルなんだ。Excelで基礎が分かっていれば、Pythonへの移行はそれほど難しくないよ。


この記事では「Pythonで線形回帰をやってみたい」人向けに、scikit-learnを使った実装手順を一歩ずつ解説していくよ。コードもコピペで動くから、読みながら手を動かしてみてね!
📘 線形回帰の基礎をおさらいしたい人はこちら
そもそも線形回帰って何?という疑問から、実世界での活用事例まで丁寧に解説しているよ。Pythonに進む前のおさらいに最適!
👉 線形回帰分析とは?やり方から活用法まで徹底解説【2026年最新版・初心者向け】
📊 なぜPythonで線形回帰をやるの?
Excelとの違い・メリット
- 大量データに強い:数十万行・数百万行も問題なく処理できる
- 再現性が高い:コードを保存しておけば、何度でも同じ分析を再現できる
- 自動化できる:定期的な分析やバッチ処理に組み込める
- 発展性が高い:ランダムフォレスト・ニューラルネットなど、他の機械学習手法にも同じ流れで進める
- 無料で使える:scikit-learn・pandas・matplotlibなど、すべて無料


Excelは「探索的に試してみる」場面では最強だけど、本格的な分析や繰り返し実行が必要になるとPythonに軍配が上がるよ。両方を使い分けられるようになると、データ分析の選択肢がグッと広がるんだ。
scikit-learnって何?
scikit-learn(サイキット・ラーン)は、Pythonで機械学習を扱う際の業界標準ライブラリだよ。
- 線形回帰・決定木・ランダムフォレスト・SVMなど、主要な機械学習手法を網羅
- シンプルで統一されたインターフェース(fit → predict の流れ)
- 世界中の研究・実務で広く使われており、情報も豊富
- 無料・オープンソース
🚀 実行環境を準備しよう
おすすめ:Google Colabが一番ラク
「インストールが面倒…」って人には、Googleが提供するGoogle Colabが断然おすすめだよ。ブラウザでアクセスするだけで、Pythonと必要なライブラリが全部入った環境がすぐ使えるんだ。
- Googleアカウントがあれば無料で利用可
- インストール作業ゼロ
- scikit-learn・pandas・matplotlibなどがプリインストール済み
- GPU/TPUも無料で使える(高度な分析時)
ブラウザで「Google Colab」と検索 → 新規ノートブックを作成、で準備完了。


初めてPythonに触る人は、迷わずGoogle Colabがおすすめ!環境構築でつまずくのが学習の最大の壁だから、それを丸ごとスキップできるのは大きなメリットだよ。
ローカル環境で動かす場合
自分のPCで動かしたい人は、以下のいずれかでOK。
- Anaconda:機械学習用ライブラリが一括インストールされる定番ディストリビューション
- Jupyter Notebook:ブラウザベースで対話的にコードを書ける
- VS Code + Python:軽量で柔軟、本格的に開発したい人向け
💻 scikit-learnで線形回帰を実装してみよう【実践編】


ここからは実際にコードを動かしていくよ。コピペで動くようになっているから、自分の環境で試しながら読み進めてね!
ステップ1:必要なライブラリをインポート
import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
それぞれの役割:
- numpy:数値計算ライブラリ
- pandas:データフレーム操作
- LinearRegression:線形回帰モデル本体
- train_test_split:データを訓練用とテスト用に分割
- mean_squared_error / r2_score:モデルの評価指標
ステップ2:サンプルデータを作る(または読み込む)
まずは小さな例で動作確認してみよう。
# サンプルデータ:勉強時間と試験点数の関係
data = {
'勉強時間': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'点数': [50, 55, 65, 70, 75, 80, 82, 88, 90, 95]
}
df = pd.DataFrame(data)
print(df)
もちろん、自分のCSVファイルを読み込むこともできるよ。
# CSVファイルから読み込む場合
df = pd.read_csv('your_data.csv')
df.head()
ステップ3:説明変数(X)と目的変数(y)に分ける
X = df[['勉強時間']] # 説明変数(2次元にするためダブル[[]])
y = df['点数'] # 目的変数


ここで X はダブル角括弧、y はシングル角括弧で囲むのがポイント。Xは「複数列を入れることがある」前提で2次元配列にする必要があるんだ。これを忘れるとエラーになるから注意してね!
ステップ4:訓練データとテストデータに分割
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
test_size=0.2 で「データの20%をテスト用に分ける」という意味。random_state=42 はランダム性を固定するためのおまじないだよ。
ステップ5:モデルの作成と学習
# モデルを作成
model = LinearRegression()
# 訓練データで学習
model.fit(X_train, y_train)
print('係数(傾き):', model.coef_)
print('切片:', model.intercept_)
たった3行で線形回帰の学習が完了!scikit-learnのfit()メソッドが、内部で最適な係数を計算してくれるんだ。


ここまでで基本実装はOK!「Pythonで機械学習って意外と簡単じゃん」って感じたかな?もっと色んな手法を試してみたい人には、下の本がおすすめ。Excelで体験する内容だけど、機械学習の全体像をつかむのに最適な1冊なんだ。
📚 機械学習の全体像をつかみたい人へ
線形回帰の先にある決定木・クラスタリング・分類問題まで、Excelで直感的に体験できる定番書。Python学習の前後で読むと理解が深まるよ。
ステップ6:予測する
# テストデータで予測
y_pred = model.predict(X_test)
# 結果を比較
results = pd.DataFrame({
'実測値': y_test,
'予測値': y_pred
})
print(results)
ステップ7:モデルを評価する
# 平均二乗誤差(MSE)
mse = mean_squared_error(y_test, y_pred)
print('MSE:', mse)
# 決定係数(R²)
r2 = r2_score(y_test, y_pred)
print('R²:', r2)
- MSE:予測誤差の二乗の平均(小さいほど良い)
- R²:モデルの説明力(1に近いほど良い、0.7以上で実用的)
🔧 重回帰分析もPythonで一発
説明変数を増やせば、そのまま重回帰分析になるよ。コードはほぼ同じで、Xの列を増やすだけ。
# 例:複数の説明変数で予測
X = df[['勉強時間', '出席率', '前回点数']] # 3つの変数
y = df['点数']
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
model = LinearRegression()
model.fit(X_train, y_train)
# 各変数の係数を表示
for name, coef in zip(X.columns, model.coef_):
print(f'{name}: {coef:.2f}')
print('切片:', model.intercept_)


Pythonの強みはここから!変数を10個でも100個でも、同じコードでサッと処理できるんだ。Excelだとデータ範囲を選び直す必要があるけど、Pythonなら列名のリストを変えるだけで済むよ。
📈 Excelで重回帰分析を試したい人はこちら
複数の説明変数を扱う重回帰分析を、Excelで体験できる解説記事。Pythonに進む前のステップとしてもおすすめだよ。
👉 Excelでできる!重回帰分析の使い方【2026年最新版・初心者向け】
📈 結果の可視化
matplotlibを使えば、予測結果の可視化も簡単にできるよ。
import matplotlib.pyplot as plt
# 散布図と回帰直線
plt.scatter(X_test, y_test, label='実測値', color='blue')
plt.plot(X_test, y_pred, label='予測値', color='red')
plt.xlabel('勉強時間')
plt.ylabel('点数')
plt.title('線形回帰の予測結果')
plt.legend()
plt.show()
実測値(青)と予測線(赤)を重ねて表示することで、モデルがどれくらい当てはまっているかを直感的に確認できるよ。
⚠️ よくあるエラーと対処法
エラー1:「Found input variables with inconsistent numbers of samples」
Xとyの行数が一致していないときに出るエラー。データを確認して、両方の長さを揃えよう。
エラー2:「Expected 2D array, got 1D array instead」
Xを df['col'](シングル角括弧)で渡すと出るエラー。df[['col']](ダブル角括弧)か X.values.reshape(-1, 1) を使おう。
エラー3:「ValueError: could not convert string to float」
カテゴリ変数(文字列)が含まれているとき。pd.get_dummies() でダミー変数化してから渡そう。
# カテゴリ変数のダミー化
X = pd.get_dummies(df[['性別', '学年']], drop_first=True)
🌍 モデル改善のヒント
1. 特徴量エンジニアリング
- 変数の対数化・標準化
- 変数同士の組み合わせ(積・比)
- 時系列データの場合は曜日・月などの時間的特徴量を追加
2. 外れ値・欠損値の処理
df.dropna()で欠損値を削除df.fillna(df.mean())で平均値補完- 箱ひげ図やZ-scoreで外れ値を検出
3. より高度なモデルへの拡張
- リッジ回帰(Ridge):過学習を防ぐ正則化付き線形回帰
- ラッソ回帰(Lasso):自動で重要変数を選択
- 決定木・ランダムフォレスト:非線形な関係も捉えられる
scikit-learnなら、これらすべてが 同じ fit/predict のお作法で扱えるよ。線形回帰のコードを書ければ、他のモデルにもすぐ移行できるんだ。


Pythonでの線形回帰、思ったより手軽だったでしょ?「もっと体系的に機械学習を学びたい」って思った人には、下の本がおすすめだよ。Excelの内容だけど、機械学習の考え方がスッと入ってくる構成になっているんだ。
💼 機械学習の全体観を身につけたい人へ
Excelで機械学習の代表的な手法を体験できる定番書。Pythonに進んだ後で読むと、コードの裏にある考え方の理解が深まるよ。
📊 Excelで実践した経験がある人はこちら
住宅価格データを使ったExcelでの実践記事。Pythonに移行する前にExcelで基礎を固めたい人におすすめ!
👉 Excelでできる!住宅価格データの線形回帰分析入門【2026年最新版・初心者向け】
❓ よくある質問(FAQ)
Q1. Excelでできるなら、わざわざPythonを学ぶ意味はある?
「1回限りの分析」ならExcelで十分。でも「同じ分析を毎月実行したい」「数万行以上のデータを扱う」「他の機械学習手法にも発展させたい」場合はPythonが圧倒的に有利だよ。両方使い分けるのがベストだね。
Q2. プログラミング初心者でも大丈夫?
Python基本文法(変数・リスト・関数)と、pandasの基本操作が分かれば十分実装できるよ。むしろ「線形回帰をやりたい」という具体的な目的があると、Python学習が一気に進むからおすすめ!
Q3. PyCharmやJupyterなど、どのエディタを使えばいい?
初心者ならGoogle Colab(インストール不要)が最強。慣れてきたらJupyter Notebook(対話的)かVS Code(本格開発)に移行するのがおすすめだよ。
Q4. データが少なすぎる(10行とか)と動かない?
動かないわけじゃないけど、信頼性が低くなるよ。最低でも30行、理想的には説明変数の数×10倍以上のサンプル数があると安心。少ないデータでは交差検証(cross_val_score)を使うのも手だよ。
Q5. リッジ回帰やラッソ回帰はどう使い分ける?
過学習を抑えたいだけならRidge、不要な変数を自動で削除したいならLassoが目安。両方の良いとこ取りがElasticNet。データの状況に応じて試行錯誤するのが一般的だよ。
Q6. PythonでExcelデータも読めるの?
読めるよ。pd.read_excel('file.xlsx') でExcelファイルを直接読み込めるんだ。Excel→Python→分析→結果をExcelに書き戻す、みたいな流れも可能だよ。
🎉 まとめ
Pythonとscikit-learnを使えば、たった数行のコードで線形回帰が実装できるよ。
今回学んだこと:
- scikit-learnの基本的な使い方(import → fit → predict)
- 訓練データとテストデータの分割
- モデル評価指標(MSE・R²)の使い方
- 重回帰への自然な拡張
- 可視化と改善のヒント
次のステップ:
- 自分の業務データで実際に分析してみる
- リッジ回帰・ラッソ回帰など正則化手法を試す
- 決定木やランダムフォレストなど、非線形手法へ発展


お疲れさま!Pythonでの線形回帰、ここまで来れば自分のデータで色々試せるはず。「次はどんな手法を学べばいい?」って迷ったら、下の本が良いガイドになるよ。Excelで体験する形式だから、Pythonの背景知識を補強するのにぴったりなんだ。
🚀 機械学習の世界をもっと知りたい人へ
線形回帰の先にある手法を、Excelで直感的に学べる定番書。Pythonでコードを書く前に概念を整理したい人にもおすすめだよ。
