今日からこのチュートリアルの最後までに、線形回帰を使った興行収入予測を行う予定です。
それでは始めましょう。
ステップ・バイ・ステップの興行収入予測
この機械学習プロジェクトでは、最も人気のある機械学習アルゴリズムの1つである線形回帰の助けによって、興行収入を予測します。
|
1
2
3
4
5
6
|
import pandas
from pandas import DataFrame
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
plt.style.use('seaborn')
|
IBMは次のように述べています。
「線形回帰分析とは、ある変数の値を別の変数の値に基づいて予測するために使用されます。
予測したい変数を従属変数と呼びます。
あなたが他の変数の値を予測するために使用している変数は、独立変数と呼ばれます。
この記事もチェック:知っておきたいPythonの機械学習アルゴリズムTOP5
1. モジュールのインポート
まずは、プロジェクトに必要なモジュールのインポートから始めましょう。
ここでは、pandasとmatplotlib、そしてsklearnを使用します。
|
1
2
3
4
5
|
data = pandas.read_csv('cost_revenue_clean.csv')
print("Shape of data is: ",data.shape)
print("Description of data")
data.describe() |
2. データの読み込み
次のステップは、ここにあるデータをロードすることです。
データを読み込むには、read_csv関数が必要です。
また、データの形状やデータの説明も見てみましょう。
|
1
2
3
4
5
6
7
8
9
10
11
|
X = DataFrame(data, columns=['production_budget_usd'])
y = DataFrame(data, columns=['worldwide_gross_usd'])
plt.figure(figsize=(10,6))
plt.scatter(X, y, alpha=0.3)
plt.title('Film Cost vs Global Revenue')
plt.xlabel('Production Budget $')
plt.ylabel('Worldwide Gross $')
plt.ylim(0, 3000000000)
plt.xlim(0, 450000000)
plt.show() |
|
1
2
|
regression = LinearRegression()
regression.fit(X, y) |
3. データの可視化
データのロードに成功したので、次は散布図の形でデータを可視化します。
まず、最初にロードされたデータから、生産コストと生成されたグローバルな収益を含む2つのDataFrameを作成します。
それぞれXとYのデータポイントとして格納し、plt.scatter関数を使ってポイントをプロットします。
以下は、上記で説明したステップのコードです。
|
1
2
3
|
plt.plot(X, regression.predict(X), color='red', linewidth=3)
plt.title("Final Linear Regression Line Plot")
plt.plot() |
|
1
2
3
4
|
plt.scatter(X, y, alpha=0.3,color="green")
plt.plot(X, regression.predict(X), color='red', linewidth=3)
plt.title("Final Linear Regression Plot")
plt.plot() |
4. 線形回帰の適用
最後に線形回帰を適用しますが、その主な手順は以下の通りです。
LinearRegression オブジェクトを作成し、先ほど作成したモデルオブジェクトの X と Y のデータ点をフィットさせます。
import pandas as pdimport matplotlib.pyplot as pltfrom sklearn.linear_model import LinearRegressionplt.style.use('seaborn')data = pd.read_csv('cost_revenue_clean.csv')X = pd.DataFrame(data, columns=['production_budget_usd'])y =pd.DataFrame(data, columns=['worldwide_gross_usd'])plt.figure(figsize=(10,6))plt.subplot(1,2,1)plt.scatter(X, y, alpha=0.3)plt.title('Film Cost vs Global Revenue')plt.xlabel('Production Budget $')plt.ylabel('Worldwide Gross $')plt.ylim(0, 3000000000)plt.xlim(0, 450000000)plt.subplot(1,2,2)plt.scatter(X, y, alpha=0.3,color="green")plt.plot(X, regression.predict(X), color='red', linewidth=3)plt.title("Final Linear Regression Plot")plt.plot()plt.show() |
では、モデルの出力として生成された線形点がどのような直線に見えるか見てみましょう。
以下のコードで同じように見ることができます。


しかし、このプロットが正しいかどうか、理解できているでしょうか?そこで、データの散布図と一緒に直線をプロットしてみましょう。
以下のコードで最終的なプロットが表示されます。


Pythonで実装する映画興行収入予測
では、上から順にすべてのコードを組み合わせて、完成したコードがどのようなものか見てみましょう。


まとめ
コンセプトを理解し、アウトプットを気に入っていただけたなら幸いです。
あなたのシステムで同じデータを試してみてください。
もっと学びたいですか?以下のチュートリアルをご覧ください。
- 機械学習における回帰と分類
- Pythonでゼロから始める線形回帰
- 単純な線形回帰。Pythonによる実践的な実装