2017-11-05 2 views
-2

두뇌와 몸무게에 대한 정보를 담고있는 훈련 및 테스트 데이터 세트가 있습니다. 훈련 데이터 세트를 통해 학습 한 후 테스트 데이터 세트에서 체중이 주어지면 테스트 데이터 세트의 뇌 체중을 예측합니다. 나는 linear regression을 완료했으나 데이터가 원활하게 분배되지 않았기 때문에 데이터가 만족스러운 결과를 제공하지 못했습니다.신체 - 뇌 예측 데이터 세트에 대한 학습

테스트 데이터 세트의 단일 열을 예측하기 위해 scikit-learn을 사용하여 "교육 데이터 세트"를 어떻게 훈련 할 수 있습니까? 아래의 배열은 데모 용입니다.

Training['Brain'] = [3.385, .480, 1.350, 465.00,36.330, 27.660, 14.830, 1.040, 4.190, 0.425, 0.101, 0.920, 1.000, 0.005, 0.060, 3.500 ] 

    Training['Body'] = [44.500, 15.5, 8.1, 423, 119.5, 115, 98.2, 5.5,58, 6.40, 4, 5.7,6.6, 140,1, 10.8] 

    Test['Brain'] = [192.000,3.000,160.000,0.900,1.620,0.104,4.235] 
    Test['Body'] = [180.000,25.000,169.000,2.600,11.400,2.500,50.400] 




import pandas as pd 
import matplotlib.pyplot as plt 
from scipy import stats 



training = pd.read_csv('C:\\training.csv', index_col='Index') 

test = pd.read_csv('C:\\test.csv', index_col='Index') 


train_x = training['Brain'] 
train_y = training['Body'] 

slope, intercept, r_value, p_value, std_err = stats.linregress(train_x, train_y) 


fig, ax = plt.subplots(figsize=(20,10)) 
plt.axis([-10, 600, -10, 700]) 

plt.plot(train_x, train_y, 'ro', color='blue') 
plt.ylabel('Body') 
plt.xlabel('Brain') 

plt.plot(train_x, train_x*slope+intercept, 'black') 

plt.plot() 
plt.show() 



newX = test['Body'] 



newY = newX * slope+intercept 

print(newX) 
print(newY) 
print(std_err) 
+1

없이 당신이 시도 것을보고, 우리가 당신을 도울 수있는 시작점을 제공하기 위해, 질문에 코드를 추가합니다. – Nic3500

+1

질문이 편집되었습니다. @ Nic3500 –

답변

2

나는 당신이 내 의견을 말하기를 요청했기 때문에 데이터에 임의의 알고리즘을 던지지 않기를 제안합니다. 좋은 결과를 얻으려면 올바른 알고리즘을 선택해야합니다. 한편 여기서는 선형 회귀의 예를 보여주고 있으며 다른 알고리즘을 사용하여 예측을 수행 할 수도 있습니다. 모든 입력은 배열 모양이어야합니다. 귀하의 의견에 따라

Test_x=np.array(Test['Brain']).reshape(-1, 1) Test_y=np.array(Test['Body']).reshape(-1, 1) Train_x=np.array(Train['Brain']).reshape(-1, 1) Train_y=np.array(Train['Body']).reshape(-1, 1)

from sklearn.linear_model import LinearRegression 

또한 LinReg=LinearRegression()

LinReg.fit(Train_x,Train_y) 
LinReg.predict(Test_x) 

: 예, 당신은 다음 다항식 곡선을 들어갈 수있는 데이터 집합에서 이상 치를 제거하려고 . 특이 치 제거 후 커브를 부착합니다. 비선형 경향을 볼 수 있습니다. outliers- enter image description here 그림과 함께 1 : 그림 2 outliers- enter image description here

+0

logictic regression을 사용하면 어떨까요? 데이터의 분포 때문에 선형에 대한 적절한되지 않습니다, 그것은 물류 하나의 더 정확한 추정 수 있습니다 ..? –

+0

답변을 연장했습니다. 더 많은 도움이 필요하면 부탁하십시오. – Yogesh

+0

감사합니다. 내가 필요로하는 것은 훈련 데이터 집합에 로지스틱 회귀를 플로팅하고 테스트 데이터 세트에서 전체 뇌 가치와 r- 제곱 (모델이 퍼센트로 설명하는 정도) 및 신뢰 구간을 예측하는 것입니다. 내가 시도한 코드는 아래와 같다. model.fit (X, y)에서 "ValueError : 알 수없는 레이블 유형 : 'continuous'"오류가 발생합니다. PLT 같은 NP 수입 matplotlib.pyplot로서 PD 수입 NumPy와 같은 sklearn.linear_model 가져 오기 로지스틱 회귀 팬더의 –

관련 문제