>

300 개의 데이터 세트에 50 개의 대상 클래스가 있습니다.

이것은 98 가지 기능을 갖춘 샘플 데이터 세트입니다 :

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
dataset = pd.read_csv(root_path + 'pima-indians-diabetes.data.csv', header=None)
X= dataset.iloc[:,0:8]
y= dataset.iloc[:,8]
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X = sc.fit_transform(X)
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y,test_size=0.3)
from keras import Sequential
from keras.layers import Dense
classifier = Sequential()
#First Hidden Layer
classifier.add(Dense(units = 10, activation='relu',kernel_initializer='random_normal', input_dim=8))
#Second  Hidden Layer
classifier.add(Dense(units = 10, activation='relu',kernel_initializer='random_normal'))
#Output Layer
classifier.add(Dense(units = 1, activation='sigmoid',kernel_initializer='random_normal'))
#Compiling the neural network
classifier.compile(optimizer ='adam',loss='binary_crossentropy', metrics =['accuracy'])
#Fitting the data to the training dataset
classifier.fit(X_train,y_train, batch_size=2, epochs=10)

여기에서 19 %의 정확도를 얻었고 예측 결과를 최적화하는 방법을 모르겠습니다.


  • 답변 # 1

    98 개의 피처를 가진 원본 데이터에 대해 Dimentionality Reduction 기법을 수행하여 모델에서 8 차원 입력 피처를 사용하고 있다고 생각합니다.

    구현에 대한 몇 가지 관찰 사항이 있습니다 :

    [분류 문제로]

    샘플이 50 개의 다른 클래스에 속한다고 언급했듯이 문제는 분명히 멀티 클래스 분류 문제입니다. 따라서 다음과 같이 먼저 라벨을 인코딩해야합니다.

    from keras.utils import to_categorical
    y = to_categorical(y, num_classes=50, dtype='float32')
    
    

    이 경우 최종 레이어에서 출력 노드 (클래스를 나타냄) 수와 활성화 기능을 다음과 같이 변경해야합니다.

    classifier.add(Dense(units = 50, activation='softmax'))
    
    
    또한, 당신은 categorical_crossentropy 를 ue해야합니다  모델을 컴파일하는 동안 손실 함수로 사용할 수 있습니다.

    classifier.compile(optimizer ='adam',loss='categorical_crossentropy', metrics =['accuracy'])
    
    
    <시간> [회귀 문제]

    출력이 0에서 50 (연속) 범위 내에 있고 최종 출력에서 ​​단일 출력 노드를 유지할 수 있으므로이 문제를 다중 회귀 문제로 간주 할 수도 있습니다. 그러나이 경우에는 linear 를 사용해야합니다   sigmoid 대신 활성화 기능 .

    마지막 레이어는 다음과 같아야합니다 :

    classifier.add(Dense(units = 1)) # default activation is linear
    
    
    또한, 회귀 문제가 발생하면 mean_squared_error  가장 관련성이 높은 비용 함수 (데이터 집합에 특이 치가 많지 않다고 가정) 및 accuracy  성능 측정 항목과 관련이 없으므로 ( mean_absolute_error 를 사용할 수 있음)  손실과 유사합니다). 따라서 두 번째 수정은 다음과 같습니다.

    classifier.compile(optimizer ='adam',loss='mean_squared_error')
    
    

  • 이전 java - 실 서버 중지
  • 다음 python - 시계열 문제에서 이동 평균 기능의 결 측값을 처리하는 방법은 무엇입니까?