3 개의 변수가 있습니다. Market_Price, Hours, Age.Scipy - 최적화. 두 변수 사이의 비율 찾기
최적화를 사용하여 각 변수와 Market_Price 사이의 관계를 찾았습니다.
데이터 :
hours = [1000, 10000, 11000, 11000, 15000, 18000, 37000, 24000, 28000, 28000, 42000, 46000, 50000, 34000, 34000, 46000, 50000, 56000, 64000, 64000, 65000, 80000, 81000, 81000, 44000, 49000, 76000, 76000, 89000, 38000, 80000, 69000, 46000, 47000, 57000, 72000, 77000, 68000]
market_Price = [30945, 28974, 27989, 27989, 36008, 24780, 22980, 23997, 25957, 27847, 36000, 25588, 23980, 25990, 25990, 28995, 26770, 26488, 24988, 24988, 17574, 12995, 19788, 20488, 19980, 24978, 16000, 16400, 18988, 19980, 18488, 16988, 15000, 15000, 16998, 17499, 15780, 8400]
age = [2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 7, 8, 8, 8, 8, 8, 13,]
I 파생 관계가 있었다 :
시간 = 로그 market_price하기 = 로그 (H) * H1 + H2,
연령 market_price하기 (a) * A1 + a2
여기서, h1, h2, a1, a2는 Scipy 's Optimize Curve Fit을 사용하여 찾습니다.
이제 모든 3을 하나의 계산으로 결합하여 나이와 시간을 사용하여 market_price를 결정할 수 있습니다.
내가 지금까지 해왔 던 방식은 어느 조합이 가장 작은 표준 편차를 가지는지 결정함으로써이 둘 사이의 비율을 찾는 것입니다.
std_divs = []
for ratio in ratios:
n = 0
price_difference_final = []
while n < len(prices):
predicted_price = (log(h)*h1+h1)*ratio + (log(a)*a1+a1)*(1-ratio)
price_difference_final.append(prices[n] - predicted_price)
n += 1
data = np.array(price_difference_final)
std_divs.append(np.std(data))
std_div = min(std_divs)
optimum_ratio = ratios[std_divs.index(min(std_divs))]
당신이 볼 수 있듯이, 나는 우아한 솔루션이 아닌 무차별 한 힘으로이를 수행합니다.
더구나 이제는 3의 관계가 단일 비율 인 대신 표현 될 수 없다는 것을 알았습니다. 비율은 슬라이딩해야합니다. 연도가 증가할수록 시장 가격과 관련하여 연령/연령 비율이 감소합니다.
불행히도 Scipy 's Curve Fit을 사용하여 구현할 수 없었습니다. 한 쌍의 배열 만 허용하기 때문입니다.
가장 좋은 방법을 생각해보십시오.
와우! 네가 그렇게 할 수 있는지 몰랐다. 무리 감사! – DGDD