처음부터 컴백  -  포도주 품질 예측

이전 글에서 우리는 기계 학습의 기초 지식과 회귀 유형을 소개했다.본문에서 우리는 첫 번째 기계 학습 프로젝트를 진행할 것이다.이것은 우리가 어떻게 서로 다른 데이터 집합에서 회귀를 실현하는지에 대해 하나의 사고방식을 제공할 것이다.설정, 이해, 인코딩은 한 시간밖에 걸리지 않습니다.시작합시다!😃

이곳의 임무는 한 조의 특징을 입력으로 정한 상황에서 0-10의 범위 내에서 붉은 포도주의 질을 예측하는 것이다.나는 이미 선형 회귀를 회귀 문제로 삼아 그것을 해결했다.
사용된 데이터 세트는 UCI 머신러닝 라이브러리의 와인 품질 데이터 세트입니다.데이터 세트 확인 가능here
입력 변수는 고정산도, 휘발성산도, 레몬산, 잔류당, 염화물, 유리이산화황, 총이산화황, 밀도, pH치, 황산염, 알코올이다.출력 변수(감각적 데이터 기반)는 질량(분수는 0에서 10 사이)이다.다음은 데이터 집합 전 5줄의 화면 캡처입니다.
포도주 품질 데이터 집합 전 5행

의존항


코드는python으로 작성되었습니다.이외에 pip를 사용하여 다음 라이브러리를 설치하십시오.
  • 판다: pip 설치 판다
  • matplotlib:pip 설치 matplotlib
  • numpy:pip 설치numpy
  • scikit 학습: pip 설치 scikit 학습
  • 이렇게!너는 이미 반을 완성했다😄. 다음은 다음 절차에 따라 선형 회귀 모델을 신속하게 구축합니다!

    방법


    새 IPython 노트북을 만들고 다음 코드를 삽입하여 필요한 모듈을 가져옵니다.만약 오류가 발생하면 pip를 사용하여 필요한 패키지를 설치하십시오.
    import pandas as pd 
    from sklearn.model_selection import train_test_split 
    from sklearn.linear_model import LinearRegression 
    from sklearn import metrics 
    import matplotlib.pyplot as plt 
    import numpy as np 
    import seaborn as sns
    
    pandas를 사용하여 데이터를 데이터 프레임에 읽습니다.데이터 세트의 처음 5 행을 확인하려면df.head()
    df = pd.read_csv('winequality-red.csv')
    df.head()
    
    corr()를 사용하여 데이터 세트의 각 속성 간의 상관성 찾기
    # there are no categorical variables. each feature is a number. Regression problem. 
    # Given the set of values for features, we have to predict the quality of wine. 
    # finding correlation of each feature with our target variable - quality
    correlations = df.corr()['quality'].drop('quality')
    print(correlations)
    
    각 속성과 목표 변수 간의 상관성 — 질량
    열도를 그리고 상세한 관련성을 얻으려면 다음 코드를 삽입하십시오.
    sns.heatmap(df.corr())
    plt.show()
    
    열도
    함수get_features()를 정의합니다. 이 함수는 관련성이 한도값보다 높은 특징만 출력합니다(함수에 입력 매개 변수로 전달).
    def get_features(correlation_threshold):
        abs_corrs = correlations.abs()
        high_correlations = abs_corrs
        [abs_corrs > correlation_threshold].index.values.tolist()
        return high_correlations
    
    입력 피쳐를 포함하고 x 질량 변수를 포함하는 두 벡터를 생성합니다.y에서 우리는 잔류당을 제외한 모든 특징을 얻었다.필요한 경우 임계값을 추가할 수 있습니다.
    # taking features with correlation more than 0.05 as input x and quality as target variable y 
    features = get_features(0.05) 
    print(features) 
    x = df[features] 
    y = df['quality']
    
    x를 사용하여 교육 및 테스트 세트를 만듭니다.25퍼센트의 데이터는 테스트에 사용되고 75%는 교육에 사용된다.train_test_split를 사용하여 데이터 세트의 크기를 확인할 수 있습니다.
    x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=3)
    
    일단 훈련집과 테스트집을 만들면 선형 회귀 모델을 구축할 수 있다.내장 함수를 간단하게 사용하여 모델을 만들고 훈련 데이터에 적응할 수 있습니다.훈련 후 x_train.shape 각 특징의 계수치를 제시한다.
    # fitting linear regression to training data
    regressor = LinearRegression()
    regressor.fit(x_train,y_train)
    # this gives the coefficients of the 10 features selected above. 
    
    print(regressor.coef_)
    
    이 모델로 포도주의 질을 예측해 사용coef_.
    train_pred = regressor.predict(x_train)
    print(train_pred)
    test_pred = regressor.predict(x_test) 
    print(test_pred)
    
    훈련집과 시험집의 균방근 오차를 계산하다.균일 루트 오차(RMSE)는 모델 예측 값(샘플 값과 전체 값)과 실제 관찰 값 사이의 차이를 평가하는 데 자주 사용되는 방법이다.만약 우리가 좋은 모델을 세웠다면 훈련 집합과 테스트 집합의 RMSE는 매우 비슷할 것이다.만약 테스트 집합의 균방근 오차가 훈련 집합의 균방근 오차보다 훨씬 높다면 우리가 데이터를 과도하게 작성했을 가능성이 높다.
    # calculating rmse
    train_rmse = mean_squared_error(train_pred, y_train) ** 0.5
    print(train_rmse)
    test_rmse = mean_squared_error(test_pred, y_test) ** 0.5
    print(test_rmse)
    # rounding off the predicted values for test set
    predicted_data = np.round_(test_pred)
    print(predicted_data)
    print('Mean Absolute Error:', metrics.mean_absolute_error(y_test, test_pred))
    print('Mean Squared Error:', metrics.mean_squared_error(y_test, test_pred))
    print('Root Mean Squared Error:', np.sqrt(metrics.mean_squared_error(y_test, test_pred)))
    # displaying coefficients of each feature
    coeffecients = pd.DataFrame(regressor.coef_,features) coeffecients.columns = ['Coeffecient'] 
    print(coeffecients)
    
    각 피쳐의 계수
    이 숫자들은 모든 다른 특징이 변하지 않는 상황에서 황산염이 1개 단위를 증가하면 포도주의 질이 0.8개 증가하고 다른 특징도 0.8개 단위가 증가한다는 것을 의미한다.
    모든 다른 특징이 변하지 않는 상황에서 휘발성 산도는 1개 단위가 증가할 때마다 포도주의 질이 0.99 떨어지고 다른 특징도 떨어진다.
    따라서 몇 줄의 코드를 통해 우리는 선형 회귀 모델을 구축하여 포도주의 질을 예측할 수 있다. 훈련집과 테스트집의 RMSE 점수는 각각 0.65와 0.63이다.복귀부터 도와줄 생각일 뿐이야.임계값과 다른 회귀 모델을 사용하거나 특징 공정을 시도할 수 있습니다😍.
    전체 코드를 얻으려면 이 link 를 사용하여 저장소로 가세요.데이터 세트도 업로드됩니다:) 저장소를 복제하고 결과를 보려면 노트북을 실행합니다.
    다음 글은 분류와 유사한 작은 항목을 토론할 것이다.더 많은 관심 부탁드립니다!그때까지 즐겁게 공부하다😸

    좋은 웹페이지 즐겨찾기