4차원 밀리미터파 분류를 위한 의사결정나무 구현 방법

        4D 밀리미터파 레이더의 일부 기능을 이용하여 정확하게 분류할 수 있습니다. 여기서는 점의 개수, 거리, 방위각, 길이, 너비를 특징으로 사용하고, 길이와 너비는 대상의 방향을 추정한 후 포인트 클라우드를 방향으로 투영하여 계산한다.

        교육은 Python의 sklearn을 사용하므로 직접 가져오기만 하면 됩니다.

from sklearn.tree import DecisionTreeClassifier

        여기에는 세 가지 범주(자동차, 카트 및 자전거)의 80,000개 이상의 데이터 세트가 사용되며, 그 중 80%는 훈련 세트로 사용되고 20%는 테스트 세트로 사용됩니다.       

 from sklearn.model_selection import train_test_split

 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2)

        그런 다음 훈련할 함수를 호출합니다.

decision_tree = DecisionTreeClassifier()        
decision_tree.fit(X_train, y_train)

        학습 후 테스트 세트에서 유효성 검사

y_train_pred = decision_tree.predict(X_train)
y_test_pred = decision_tree.predict(X_test)

         검증 정확도

from sklearn.metrics import accuracy_score
print('decision tree train accurary socre:', accuracy_score(y_train, y_train_pred), 'test accurary socre:', accuracy_score(y_test, y_test_pred))
train_error_score = 1 - accuracy_score(y_train, y_train_pred)
test_error_score = 1 - accuracy_score(y_test, y_test_pred)
print('decision tree train error socre:', train_error_score, 'test error socre:', test_error_score)

        기본 매개변수를 사용하면 훈련 세트의 정확도는 100%이고 테스트 세트의 정확도는 95%입니다.

        Decision Tree의 깊이를 구하여 33개의 Layer가 있고 Leaf의 개수가 2179개로 너무 크다는 것을 알아냈다.

tree_depth = decision_tree.get_depth()
tree_leaves = decision_tree.get_n_leaves()
print('depth',tree_depth,',leaves:',tree_leaves)

        의사 결정 트리 시각화 도구를 호출하면 결과를 볼 수 있습니다. 리프 트리가 너무 많아서 전체 화면 표시에서 작은 점만 볼 수 있습니다.

         100% 확대하여 세부 정보 보기

        레이어와 리프 트리가 너무 많아 오버피팅될 위험이 있고 구현 코드도 매우 복잡하므로 레이어 수를 줄이는 것이 좋습니다.

decision_tree = DecisionTreeClassifier(max_depth=9)  

        의사결정나무 모델을 생성할 때 최대 깊이를 9로 설정하면 최종 생성되는 의사결정나무의 부피가 크게 줄어들고 측정 결과의 레이어 수는 9개, 잎나무의 수는 230개가 된다.

         훈련 세트의 정확도는 떨어졌지만 테스트 세트는 개선되어 과대적합이 줄어들고 일반화 성능이 향상되었음을 나타냅니다.

         모델이 생성된 후 코드를 작성하는데 많은 수고가 필요한데, 여기에서 블로거의 방법을 참고하여 코드를 이용하여 자동으로 생성한다. 다만 파이썬 스크립트에 작은 문제가 있어 직접 찾아서 수정해야 최종 결과를 얻을 수 있다.

Python 훈련된 결정 트리 모델을 사용하여 C++ 코드 생성_C++에서 python sklearn의 결정 트리 모델을 사용하는 방법

m2cgen 라이브러리를 사용하여 모델을 c 코드로 변환할 수도 있습니다.자세한 내용은 m2cgen · PyPI를         참조하십시오.

import m2cgen as m2c
code = m2c.export_to_c(decision_tree)
file = open('radar_tree_m2cgen_code.txt','w')
file.write(code)
file.close()

        효과가 만족스럽지 않으면 다양한 기능 조합을 사용하여 비교 실험을 수행하여 원하는 결과를 얻을 수 있습니다.

Supongo que te gusta

Origin blog.csdn.net/weixin_41691854/article/details/129830285
Recomendado
Clasificación