Tôi đang sử dụng Trình phân loại rừng ngẫu nhiên scikit-learn và tôi muốn vẽ tầm quan trọng của tính năng như trong ví dụ này .
Tuy nhiên, kết quả của tôi là hoàn toàn khác nhau, theo nghĩa là độ lệch chuẩn của tính năng quan trọng hầu như luôn luôn lớn hơn bản thân tầm quan trọng của tính năng (xem hình ảnh đính kèm).
Có thể có loại hành vi như vậy, hoặc tôi đang làm một số sai lầm khi âm mưu?
Mã của tôi là như sau:
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier()
clf.fit(predictors.values, outcome.values.ravel())
importance = clf.feature_importances_
importance = pd.DataFrame(importance, index=predictors.columns,
columns=["Importance"])
importance["Std"] = np.std([tree.feature_importances_
for tree in clf.estimators_], axis=0)
x = range(importance.shape[0])
y = importance.ix[:, 0]
yerr = importance.ix[:, 1]
plt.bar(x, y, yerr=yerr, align="center")
plt.show()
pandas DataFrame
với hình dạng m x n
và m x 1
. Nó nên được rõ ràng bây giờ.
tsfresh
giúp tôi xác định các tính năng có liên quan và cắt các tính năng của tôi từ 600+ xuống còn khoảng 400. ! [35 tính năng hàng đầu của tôi ] ( i.stack.imgur.com/0MROZ.png ) Ngay cả khi thuật toán này hoạt động tốt cho tôi. Tôi có một phân loại nhị phân, thành công / thất bại. Tôi hầu như không có thành công sai nhưng tôi bỏ lỡ một phần trăm thành công lớn. Tất cả những dự đoán ở trên có vẻ hợp lý. Nó có thể là trường hợp cần phải có một bộ thử nghiệm và đào tạo lớn hơn. Tôi có ít hơn
predictors
trả về mộtnumpy array
cái mà bạn đang tham chiếu đến mộtpandas Dataframe
đối tượng bởi các cột không chính xác vìnumpy arrays
không có thuộc tínhcolumns
.