기계 학습을 이용한 심장 질환 분석.

심장 질환은 심장에 영향을 미치는 일련의 상태를 말합니다. 심장 질환 우산 아래의 질병에는 관상 동맥 질환, 심근 경색, 심부전, 심장 박동 문제(부정맥) 및 선천성 심장 결함(선천성 심장 결함)과 같은 혈관 질환이 포함됩니다. 다음과 같은 심장 질환을 유발하는 위험 요소:
  • 과체중
  • 고혈압
  • 고콜레스테롤 수치
  • 당뇨병
  • 비활성 상태

  • GitHub 코드Link

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    from matplotlib import rcParams
    import seaborn as sns
    import warnings
    warnings.filterwarnings('ignore')
    from sklearn.neighbors import KNeighborsClassifier
    



    df = pd.read_csv('dataset.csv')
    print(df.head())
    


    산출:


    print(df.info())
    


    산출:


    print(df.describe())
    


    산출:

    기능 선택



    데이터 세트에서 각 기능의 상관 관계를 얻으려면

    import seaborn as sns
    corrmat = df.corr()
    top_corr_features = corrmat.index
    plt.figure(figsize=(16,16))
    #plot heat map
    g=sns.heatmap(df[top_corr_features].corr(),annot=True,cmap="RdYlGn")
    plt.show()
    


    산출:

    대상 클래스의 크기가 거의 동일한 데이터 세트로 작업하는 것이 항상 좋습니다. 따라서 동일한 내용을 확인하겠습니다.

    sns.set_style('whitegrid')
    sns.countplot(x='target',data=df,palette='RdBu_r')
    plt.show()
    


    산출:

    데이터 처리



    데이터 세트를 탐색한 후 기계 학습 모델을 교육하기 전에 일부 범주형 변수를 더미 변수로 변환하고 모든 값을 확장해야 한다는 것을 알았습니다.

    먼저 get_dummies 메서드를 사용하여 범주형 변수에 대한 더미 열을 만듭니다.

    dataset = pd.get_dummies(df, columns = ['sex', 'cp', 
                                            'fbs','restecg', 
                                            'exang', 'slope', 
                                            'ca', 'thal'])
    from sklearn.model_selection import train_test_split
    from sklearn.preprocessing import StandardScaler
    standardScaler = StandardScaler()
    columns_to_scale = ['age', 'trestbps', 'chol', 'thalach', 'oldpeak']
    dataset[columns_to_scale] = standardScaler.fit_transform(dataset[columns_to_scale])
    dataset.head()
    


    산출:


    y = dataset['target']
    X = dataset.drop(['target'], axis = 1)
    



    from sklearn.model_selection import cross_val_score
    knn_scores = []
    for k in range(1,21):
        knn_classifier = KNeighborsClassifier(n_neighbors = k)
        score=cross_val_score(knn_classifier,X,y,cv=10)
        knn_scores.append(score.mean())
    



    plt.plot([k for k in range(1, 21)], knn_scores, color = 'red')
    for i in range(1,21):
        plt.text(i, knn_scores[i-1], (i, knn_scores[i-1]))
    plt.xticks([i for i in range(1, 21)])
    plt.xlabel('Number of Neighbors (K)')
    plt.ylabel('Scores')
    plt.title('K Neighbors Classifier scores for different K values')
    plt.show()
    


    산출:


    knn_classifier = KNeighborsClassifier(n_neighbors = 12)
    score=cross_val_score(knn_classifier,X,y,cv=10)
    score.mean()
    


    산출:


    랜덤 포레스트 분류기




    from sklearn.ensemble import RandomForestClassifier
    randomforest_classifier= RandomForestClassifier(n_estimators=10)
    score=cross_val_score(randomforest_classifier,X,y,cv=10)
    score.mean()
    


    산출:

    좋은 웹페이지 즐겨찾기