|
利用机器学习对信号特征分类
- import numpy as np
- from sklearn.ensemble import RandomForestClassifier
- from sklearn.metrics import classification_report
- from sklearn.ensemble import GradientBoostingClassifier
- # from siml.sk_utils import *
- # from siml.signal_analysis_utils import *
- # 利用机器学习对信号特征分类
- # load提取的特征
- train = np.load("train.npy")
- X_train, Y_train = train[:, :-1], train[:, -1]
- print(X_train.shape, Y_train.shape)
- test = np.load("test.npy")
- X_test, Y_test = test[:, :-1], test[:, -1]
- print(X_test.shape, Y_test.shape)
- # '''
- clf = RandomForestClassifier(n_estimators=1000)
- # clf = GradientBoostingClassifier()
- clf.fit(X_train, Y_train)
- # Accuracy on training set is : 1.0
- # Accuracy on test set is : 0.8798778418730913
- print("Accuracy on training set is : {}".format(clf.score(X_train, Y_train)))
- print("Accuracy on test set is : {}".format(clf.score(X_test, Y_test)))
- Y_test_pred = clf.predict(X_test)
- print(classification_report(Y_test, Y_test_pred))
- # '''
- # See https://github.com/taspinar/siml
- # dict_results = batch_classify(X_train, Y_train, X_test, Y_test)
- # python3.8不支持clock了,替换成time.perf_counter()替换就可以了
- # display_dict_models(dict_results)
- # (7352, 270) (7352,)
- # (2947, 270) (2947,)
- # Accuracy on training set is : 1.0
- # Accuracy on test set is : 0.8819138106549033
- # precision recall f1-score support
- #
- # 1.0 0.93 0.98 0.96 496
- # 2.0 0.93 0.95 0.94 471
- # 3.0 0.96 0.88 0.92 420
- # 4.0 0.80 0.75 0.77 491
- # 5.0 0.78 0.93 0.85 532
- # 6.0 0.93 0.81 0.87 537
- #
- # accuracy 0.88 2947
- # macro avg 0.89 0.88 0.88 2947
- # weighted avg 0.89 0.88 0.88 2947
复制代码
|
|