Pythonによる興行収入予測 – 簡単な実装例

スポンサーリンク

今日からこのチュートリアルの最後までに、線形回帰を使った興行収入予測を行う予定です。

それでは始めましょう。

スポンサーリンク

ステップ・バイ・ステップの興行収入予測

この機械学習プロジェクトでは、最も人気のある機械学習アルゴリズムの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は次のように述べています。

「線形回帰分析とは、ある変数の値を別の変数の値に基づいて予測するために使用されます。

予測したい変数を従属変数と呼びます。

あなたが他の変数の値を予測するために使用している変数は、独立変数と呼ばれます。

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 pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
plt.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()

では、モデルの出力として生成された線形点がどのような直線に見えるか見てみましょう。

以下のコードで同じように見ることができます。

Simple Linear Regression Example
Description Box Office Data

しかし、このプロットが正しいかどうか、理解できているでしょうか?そこで、データの散布図と一緒に直線をプロットしてみましょう。

以下のコードで最終的なプロットが表示されます。

Initial Box Office Visual
Final LR Box Office Plot

Pythonで実装する映画興行収入予測

では、上から順にすべてのコードを組み合わせて、完成したコードがどのようなものか見てみましょう。

Final Box Office Revenue Prod Visual
Final Output Box Office

まとめ

コンセプトを理解し、アウトプットを気に入っていただけたなら幸いです。

あなたのシステムで同じデータを試してみてください。

もっと学びたいですか?以下のチュートリアルをご覧ください。

  1. 機械学習における回帰と分類
  2. Pythonでゼロから始める線形回帰
  3. 単純な線形回帰。Pythonによる実践的な実装
タイトルとURLをコピーしました