私はまだクラスメソッドのさまざまな使い方を学んでいます。私は線形回帰を実行するいくつかのコードを持っています。だから私はLinRegressionと呼ばれる一般的なクラスを作り、線形回帰のタイプに基づいてクラスを呼び出すより具体的なメソッドを使用することにしました(つまり、1つの末尾の日を使用するか、回帰の5日後などを使用します)。このクラスを呼び出して使用する正しい方法は何ですか? TypeError:欠落している1つの位置引数: 'self'
とにかく、ここに行きます。私はクラスをどのように定義し、そのクラスをコールしているかに関して、ここで何か間違っているように感じる。 これはmain.pyファイルからである:私は私がやっている「と思う」とは何ですか
class LinRegression:
import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import LinearRegression as lr
from sklearn.metrics import mean_squared_error as mse
from SEplot import se_plot as SE
def __init__(self, daily_vol_result):
"""
:param daily_vol_result: result from def daily_vol_calc
"""
import numpy as np
data = np.asarray(daily_vol_result['Volatility_Daily'])
self.data = data
@classmethod
def one_day_trailing(cls, self):
"""
Compute one day trailing volatility
:return: Mean Squared error, slope: b, and y-int: c
"""
x = self.data[:-1]
y = self.data[1:]
x = x.reshape(len(x), 1)
cls.lr.fit(x, y)
b = cls.lr.coef_[0]
c = cls.lr.intercept_
y_fit1 = b * x + c
MSE1 = cls.mse(y, y_fit1)
print("MSE1 is " + str(MSE1))
print("intercept is " + str(c))
print("slope is " + str(b))
cls.SE(y, y_fit1)
return MSE1, b, c
:
lin_reg = LinRegression(daily_vol_result)
lin_reg.one_day_trailing()
そして、これはlinear_regressionファイル(一日だけ末尾の場合を示す)からですlin_regを呼び出すと、私はすでにdaily_vol_resultが渡されています。そして、lin_reg.one_day_trailing()はので定義された自己を使ってone_day_trailingのdefを実行します。
しかし、私はTypeError:one_day_trailing()に1つの必須位置引数 'self'があります。その他の情報、変数、daily_vol_resultはDataFrameで、np配列に変換してsklearnで線形回帰を行います。
また、私はコードをうまく動作させようとしたときに、lr.fit(x、y)という行がyの位置引数なしでタイプエラーを出したという追加の問題がありました。 yの存在と長さを調べて、xと一致するかどうかを調べ、チェックします。どのように私が1つの引数を渡すだけだったかについてはかなり混乱しています。
あなたのアイデアやアドバイスは、ありがとうございます!