date = [ { "study_time": 1, "salary": 350, "absences": 5, "city": "San Francisco" }, { "study_time": 2, "salary": 1600, "absences": 4, "city": "London" }, { "study_time": 3, "salary": 2450, "absences": 3, "city": "Paris" }, { "study_time": 4, "salary": 5150, "absences": 5, "city": "San Francisco" }, { "study_time": 5, "salary": 5800, "absences": 4, "city": "London" }, { "study_time": 6, "salary": 6050, "absences": 3, "city": "Paris" } ]
{ "study_time": 13, "salary": ???, "absences": 5, "city": "San Francisco" }
다항 회귀를 사용하면 이 시퀀스의 값 13은 24814
입니다.
그러나 올바른 값은 19550
입니다.
오류: 5264
49위를 예측한다면 182441이 될 것입니다
하지만 올바른 값은 77150
입니다.
오류: 105291
진행을 생성하는 "숨겨진 알고리즘"이었습니다.
x = 0 absences_base = 50 salary_base = 1000 data = [] for i in range(50): if x == 0: x += 1 data.append({ "study_time": i + 1, "salary": (i * salary_base + (300 * 2 * (i + 1))) - (5 * absences_base), "absences": 5, "city": "San Francisco" }) elif x == 1: x += 1 data.append({ "study_time": i + 1, "salary": (i * salary_base + (200 * 2 * (i + 1))) - (4 * absences_base), "absences": 4, "city": "London" }) else: x = 0 data.append({ "study_time": i + 1, "salary": (i * salary_base + (100 * 2 * (i + 1))) - (3 * absences_base), "absences": 3, "city": "Paris" }) for entry in data: print(entry)
{'study_time': 1, 'salary': 350, 'absences': 5, 'city': 'San Francisco'} {'study_time': 2, 'salary': 1600, 'absences': 4, 'city': 'London'} {'study_time': 3, 'salary': 2450, 'absences': 3, 'city': 'Paris'} {'study_time': 4, 'salary': 5150, 'absences': 5, 'city': 'San Francisco'} {'study_time': 5, 'salary': 5800, 'absences': 4, 'city': 'London'} {'study_time': 6, 'salary': 6050, 'absences': 3, 'city': 'Paris'} {'study_time': 7, 'salary': 9950, 'absences': 5, 'city': 'San Francisco'} {'study_time': 8, 'salary': 10000, 'absences': 4, 'city': 'London'} {'study_time': 9, 'salary': 9650, 'absences': 3, 'city': 'Paris'} {'study_time': 10, 'salary': 14750, 'absences': 5, 'city': 'San Francisco'} {'study_time': 11, 'salary': 14200, 'absences': 4, 'city': 'London'} {'study_time': 12, 'salary': 13250, 'absences': 3, 'city': 'Paris'} {'study_time': 13, 'salary': 19550, 'absences': 5, 'city': 'San Francisco'}
다항 회귀는 두 변수 간의 관계를 모델링하고 예측하는 데 사용할 수 있는 통계 기법입니다. 그러나 이와 같이 여러 변수(학습 시간, 급여, 결근 및 도시)가 관련된 경우 다항 회귀 분석으로는 시계열의 모든 패턴을 포착하는 데 충분하지 않을 수 있습니다.
문제의 문제는 과거에 관찰된 패턴을 기반으로 미래 가치를 예측해야 하는 시계열의 전형적인 예입니다.
이 문제는 머신러닝
으로 해결할 수 있습니다.또한 변수 간의 모든 관계를 분석하고 다양한 가설을 테스트하여 진행 상황을 파악하는 것이 필수적일 수 있습니다. 여기에는 다음이 포함될 수 있습니다.
탐색적 분석: 탐색적 분석 기술을 사용하여 시계열의 특성을 더 잘 이해하고 변수 간의 가능한 패턴이나 관계를 식별합니다.
통계 검정: 변수 간 관찰된 관계에 유의성이 있는지 확인하기 위해 통계 검정을 수행합니다.
또 다른 해결책은 가장 기본적인 가설을 사용하여 이를 수행하는 알고리즘을 만드는 것입니다.
'관계 연산'을 테스트하기 위한 이 알고리즘은 직접적인 기계 학습(또는 명시적 기계 학습) 접근 방식입니다. 이는 알고리즘이 고급 기계 학습 기술을 사용하지 않고 규칙과 논리 구조를 구현하여 시계열 패턴을 학습한다는 것을 의미합니다.
기본 가설만 테스트하면 다음과 같은 제한 사항이 발생합니다.
머신러닝 모델은 다음을 수행할 수 있습니다.
더 복잡한 솔루션을 찾기 전에 더 간단한 솔루션이 적절하게 테스트되었는지 확인하는 것이 가장 좋습니다.
진행 수열에 3줄만 더 포함하면 다항식 수열을 사용하여 정확한 값을 예측할 수 있습니다
date = [ { "study_time": 1, "salary": 350, "absences": 5, "city": "San Francisco" }, { "study_time": 2, "salary": 1600, "absences": 4, "city": "London" }, { "study_time": 3, "salary": 2450, "absences": 3, "city": "Paris" }, { "study_time": 4, "salary": 5150, "absences": 5, "city": "San Francisco" }, { "study_time": 5, "salary": 5800, "absences": 4, "city": "London" }, { "study_time": 6, "salary": 6050, "absences": 3, "city": "Paris" }, {'study_time': 7, 'salary': 9950, 'absences': 5, 'city': 'San Francisco'}, {'study_time': 8, 'salary': 10000, 'absences': 4, 'city': 'London'}, {'study_time': 9, 'salary': 9650, 'absences': 3, 'city': 'Paris'} ]
따라서 이 문제는 데이터 샘플이 충분하다면 다항식 회귀로 해결될 수 있습니다
정확한 예측을 위해서는 모델이 최대 9행까지의 데이터 샘플만 필요하다는 점이 흥미롭습니다. 이는 제한된 양의 데이터로 포착할 수 있는 시계열에도 규칙적인 패턴이 있음을 시사합니다. 그리고 실제로 있었습니다.
import pandas as pd import matplotlib.pyplot as plt from sklearn.preprocessing import PolynomialFeatures from sklearn.linear_model import LinearRegression data = pd.DataFrame({ "study_time": [1, 2, 3, 4, 5, 6, 7, 8, 9], "absences": [5, 4, 3, 5, 4, 3, 5, 4, 3], "San Francisco": [0, 1, 0, 0, 1, 0, 0, 1, 0], # dummy variables "London": [0, 0, 1, 0, 0, 1, 0, 0, 1], # dummy variables "Paris": [1, 0, 0, 1, 0, 0, 1, 0, 0], # dummy variables "salary": [350, 1600, 2450, 5150, 5800, 6050, 9950, 10000, 9650] }) # Independent and dependent variables X = data[["study_time", "absences", "San Francisco", "London", "Paris"]] y = data["salary"] # Creating polynomial characteristics of degree 2 characteristics_2 = PolynomialFeatures(degree=2) x_pol_2 = characteristics_2.fit_transform(X) y_pol_2 = model2.predict(x_pol_2) # Fitting the linear regression model model2 = LinearRegression() model2.fit(x_pol_2, y) # New data provided for prediction new_data = pd.DataFrame({ "study_time": [13], "absences": [5], "San Francisco": [0], "London": [0], "Paris": [1] }) # Polynomial transformation of the new data new_data_pol_2 = characteristics_2.transform(new_data) predicted_salary = model2.predict(new_data_pol_2) print("Predicted Salary:", int(predicted_salary[0]) ) # Plot plt.subplot(1, 1, 1) plt.scatter(new_data["study_time"], predicted_salary, color='green', label='Predicted Salary') plt.scatter(data["study_time"], y, color='blue', label='Real Salary') plt.scatter(data["study_time"], y_pol_2, color='red', label='Polynomial Fit', marker='x') plt.title("Polynomial Regression - Salary and Study Time") plt.xlabel("Study Time") plt.ylabel("Salary") plt.legend() plt.show()
위 내용은 다항 회귀를 통해 정확한 예측 잠금 해제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!