Hướng dẫn log loss logistic regression python - log mất log hồi quy logistic python

sklearn.metrics.log_loss (y_true, y_pred, *, eps = 1e-15, bình thường = truelog_loss(y_true, y_pred, *, eps=1e-15, normalize=True, sample_weight=None, labels=None)[source]

Mất nhật ký, AKA mất logistic hoặc mất chéo.

Đây là chức năng mất mát được sử dụng trong hồi quy logistic (đa phương thức) và các phần mở rộng của nó như mạng thần kinh, được định nghĩa là khả năng nhật ký tiêu cực của mô hình logistic trả về xác suất y_pred cho dữ liệu đào tạo của nó y_true. Mất nhật ký chỉ được xác định cho hai hoặc nhiều nhãn. Đối với một mẫu duy nhất có nhãn true \ (y \ in \ {0,1 \} \) và ước tính xác suất \ (p = \ operatorName {pr} (y = 1) \), mất nhật ký là:\(y \in \{0,1\}\) and a probability estimate \(p = \operatorname{Pr}(y = 1)\), the log loss is:

\ [L _ {\ log} (y, p) = - (y \ log (p) + (1 - y) \ log (1 - p)) \]

Đọc thêm trong Hướng dẫn sử dụng.User Guide.

Các tham số: Ma trận chỉ báo giống như Y__TrueArray:y_truearray-like or label indicator matrix

Nhãn sự thật mặt đất (đúng) cho các mẫu N_Samples.

y_predarray giống như phao, hình dạng = (n_samples, n_ classes) hoặc (n_samples,)array-like of float, shape = (n_samples, n_classes) or (n_samples,)

Xác suất dự đoán, được trả lại bởi phương thức phân loại dự đoán_proba. Nếu y_pred.shape = (n_samples,) xác suất được cung cấp được coi là của lớp dương. Các nhãn trong y_pred được cho là được đặt hàng theo thứ tự bảng chữ cái, như được thực hiện bởi

   Principal terms age Gender weekend Bachelor  HighSchoolerBelow college
0   1000     30    45   0       0       0               1              0
1   1000     30    33   1       0       1               0              0
2   1000     15    27   0       0       0               0              1
1.

epsfloat, mặc định = 1e-15float, default=1e-15

Mất nhật ký không được xác định cho p = 0 hoặc p = 1, do đó xác suất được cắt sang tối đa (EPS, MIN (1 - EPS, P)).

NormalizeBool, mặc định = truebool, default=True

Nếu đúng, hãy trả lại tổn thất trung bình trên mỗi mẫu. Nếu không, trả lại tổng của tổn thất mỗi mẫu.

sample_weightarray giống như hình dạng (n_samples,), mặc định = không cóarray-like of shape (n_samples,), default=None

Trọng lượng mẫu.

LabelsArray-like, default = nonearray-like, default=None

Nếu không được cung cấp, các nhãn sẽ được suy ra từ y_true. Nếu

   Principal terms age Gender weekend Bachelor  HighSchoolerBelow college
0   1000     30    45   0       0       0               1              0
1   1000     30    33   1       0       1               0              0
2   1000     15    27   0       0       0               0              1
2 là
   Principal terms age Gender weekend Bachelor  HighSchoolerBelow college
0   1000     30    45   0       0       0               1              0
1   1000     30    33   1       0       1               0              0
2   1000     15    27   0       0       0               0              1
3 và y_pred có hình dạng (n_samples,), các nhãn được coi là nhị phân và được suy ra từ y_true.

Mới trong phiên bản 0.18.

Returns:lossfloat:lossfloat

Mất nhật ký, AKA mất logistic hoặc mất chéo.

Ghi chú

Logarit được sử dụng là logarit tự nhiên (cơ sở-E).

Người giới thiệu

C.M. Giám mục (2006). Nhận dạng mẫu và học máy. Springer, p. 209.

Ví dụ

>>> from sklearn.metrics import log_loss
>>> log_loss(["spam", "ham", "ham", "spam"],
...          [[.1, .9], [.9, .1], [.8, .2], [.35, .65]])
0.21616...

Ví dụ sử dụng ________ 16¶

Tôi đã đào tạo một mô hình sử dụng hồi quy logistic và cần đánh giá độ chính xác của nó với tổn thất log. Dưới đây là một số chi tiết về dữ liệu:

Các tính năng/ x

   Principal terms age Gender weekend Bachelor  HighSchoolerBelow college
0   1000     30    45   0       0       0               1              0
1   1000     30    33   1       0       1               0              0
2   1000     15    27   0       0       0               0              1

Nhãn/ y

array(['PAIDOFF', 'PAIDOFF', 'PAIDOFF', 'PAIDOFF', 'COLLECTION'], dtype=object)

Mô hình hồi quy logistic:

from sklearn.linear_model import LogisticRegression
logreg = LogisticRegression(C=1e5, solver='lbfgs', multi_class='multinomial')
Feature = df[['Principal','terms','age','Gender','weekend']]
Feature = pd.concat([Feature,pd.get_dummies(df['education'])], axis=1)
Feature.drop(['Master or Above'], axis = 1,inplace=True)

X = Feature

X= preprocessing.StandardScaler().fit(X).transform(X)

y = df['loan_status'].values

X_train, X_test, y_train, lg_y_test = train_test_split(X, y, test_size=0.3, random_state=4)


# we create an instance of Neighbours Classifier and fit the data.
logreg.fit(X_train, y_train)

lg_loan_status = logreg.predict(X_test)
lg_loan_status

Bây giờ tôi cần tính toán

   Principal terms age Gender weekend Bachelor  HighSchoolerBelow college
0   1000     30    45   0       0       0               1              0
1   1000     30    33   1       0       1               0              0
2   1000     15    27   0       0       0               0              1
7 cho điều đó.

Đây là bộ dữ liệu thử nghiệm riêng của tôi:

test_df['due_date'] = pd.to_datetime(test_df['due_date'])
test_df['effective_date'] = pd.to_datetime(test_df['effective_date'])
test_df['dayofweek'] = test_df['effective_date'].dt.dayofweek
test_df['weekend'] = test_df['dayofweek'].apply(lambda x: 1 if (x>3)  else 0)
test_df.groupby(['Gender'])['loan_status'].value_counts(normalize=True)
# test_df['Gender'].replace(to_replace=['male','female'], value=[0,1],inplace=True)
Feature = test_df[['Principal','terms','age','Gender','weekend']]
Feature = pd.concat([Feature,pd.get_dummies(df['education'])], axis=1)
Feature.drop(['Master or Above'], axis = 1,inplace=True)
Feature.head()

X = Feature
Y = test_df['loan_status'].values

Feature.head()
    Principal terms age Gender weekend Bechalor HighSchoolorBelow  college
0   1000.0    30.0  50.0 female  0.0    0               1            0
1   300.0      7.0  35.0  male   1.0    1               0            0
2   1000.0    30.0  43.0 female  1.0    0               0            1

Đây là những gì tôi đã thử:

# Evaluation for Logistic Regression
X_train, X_test, y_train, lg_y_test = train_test_split(X, y, test_size=0.3, random_state=3)

lg_jaccard = jaccard_similarity_score(lg_y_test, lg_loan_status, normalize=False)
lg_f1_score = f1_score(lg_y_test, lg_loan_status, average='micro')


lg_log_loss = log_loss(lg_y_test, lg_loan_status)

print('Jaccard is : {}'.format(lg_jaccard))
print('F1-score is : {}'.format(lg_f1_score))
print('Log Loss is : {}'.format(lg_log_loss))

Nhưng nó trả về lỗi này:

ValueError: không thể chuyển đổi chuỗi thành float: 'bộ sưu tập'

Cập nhật: Đây là

   Principal terms age Gender weekend Bachelor  HighSchoolerBelow college
0   1000     30    45   0       0       0               1              0
1   1000     30    33   1       0       1               0              0
2   1000     15    27   0       0       0               0              1
8: Here's the
   Principal terms age Gender weekend Bachelor  HighSchoolerBelow college
0   1000     30    45   0       0       0               1              0
1   1000     30    33   1       0       1               0              0
2   1000     15    27   0       0       0               0              1
8:

['PAIDOFF' 'PAIDOFF' 'COLLECTION' 'COLLECTION' 'PAIDOFF' 'COLLECTION'
'PAIDOFF' 'COLLECTION' 'PAIDOFF' 'PAIDOFF' 'PAIDOFF' 'PAIDOFF'
 'COLLECTION' 'PAIDOFF' 'PAIDOFF' 'PAIDOFF' 'PAIDOFF' 'COLLECTION'
 'PAIDOFF' 'COLLECTION' 'PAIDOFF' 'PAIDOFF' 'PAIDOFF' 'PAIDOFF' 'PAIDOFF'
 'COLLECTION' 'PAIDOFF' 'PAIDOFF' 'PAIDOFF' 'COLLECTION' 'PAIDOFF'
 'PAIDOFF' 'PAIDOFF' 'PAIDOFF' 'COLLECTION' 'PAIDOFF' 'COLLECTION'
 'COLLECTION' 'COLLECTION' 'PAIDOFF' 'PAIDOFF' 'COLLECTION' 'PAIDOFF'
 'PAIDOFF' 'COLLECTION' 'PAIDOFF' 'PAIDOFF' 'COLLECTION' 'COLLECTION'
 'PAIDOFF' 'COLLECTION' 'PAIDOFF' 'PAIDOFF' 'COLLECTION' 'COLLECTION'
 'PAIDOFF' 'PAIDOFF' 'PAIDOFF' 'PAIDOFF' 'PAIDOFF' 'PAIDOFF' 'PAIDOFF'
 'COLLECTION' 'COLLECTION' 'PAIDOFF' 'COLLECTION' 'PAIDOFF' 'PAIDOFF'
 'PAIDOFF' 'PAIDOFF' 'PAIDOFF' 'PAIDOFF' 'PAIDOFF' 'PAIDOFF' 'PAIDOFF'
 'PAIDOFF' 'PAIDOFF' 'PAIDOFF' 'PAIDOFF' 'PAIDOFF' 'PAIDOFF' 'PAIDOFF'
 'PAIDOFF' 'PAIDOFF' 'PAIDOFF' 'PAIDOFF' 'PAIDOFF' 'PAIDOFF' 'PAIDOFF'
 'PAIDOFF' 'PAIDOFF' 'PAIDOFF' 'PAIDOFF' 'PAIDOFF' 'COLLECTION'
 'COLLECTION' 'PAIDOFF' 'PAIDOFF' 'PAIDOFF' 'COLLECTION' 'PAIDOFF'
 'PAIDOFF' 'PAIDOFF' 'COLLECTION']

Mất nhật ký trong hồi quy logistic là gì?

Chức năng mất cho hồi quy logistic Hàm mất cho hồi quy tuyến tính là mất bình phương. Hàm mất cho hồi quy logistic là mất log, được định nghĩa như sau: LOST LOSE = ∑ (x, y) ∈ D - y log ⁡ (y ′) - (1 - y) log ⁡Log Loss = ∑ ( x , y ) ∈ D − y log ⁡ ( y ′ ) − ( 1 − y ) log ⁡

Làm thế nào để bạn sử dụng mất log trong Python?

Mất nhật ký có thể được thực hiện trong Python bằng cách sử dụng hàm log_loss () trong scikit-learn. Trong trường hợp phân loại nhị phân, hàm lấy một danh sách các giá trị kết quả thực sự và danh sách các xác suất là đối số và tính toán tổn thất nhật ký trung bình cho các dự đoán.using the log_loss() function in scikit-learn. In the binary classification case, the function takes a list of true outcome values and a list of probabilities as arguments and calculates the average log loss for the predictions.

Chúng ta có thể sử dụng mất nhật ký để hồi quy không?

Mất logarit cho biết mức độ xác suất dự đoán gần với giá trị thực thực/tương ứng.Do đó, hóa ra tối đa hóa khả năng tương đương với việc giảm thiểu lỗi bình phương trung bình (MSE), tức là hàm lỗi này được sử dụng rộng rãi trong các vấn đề hồi quy vì một lý do.this error function is widely used in regression problems for a reason.

Mất nhật ký có giống như khả năng đăng nhập không?

Mất nhật ký là một bước ngoặt nhẹ đối với một thứ gọi là chức năng khả năng.Trong thực tế, mất nhật ký là -1 * nhật ký của hàm khả năng.. In fact, Log Loss is -1 * the log of the likelihood function.