Bảo mật dữ liệu và Ẩn danh trong Python
Rebeca Gonzalez
Data Engineer


$$
$$

# Import the scikit-learn naive Bayes classifier from sklearn.naive_bayes import GaussianNB# Import the differentially private naive Bayes classifier from diffprivlib.models import GaussianNB
from sklearn.naive_bayes import GaussianNB# Xây dựng bộ phân loại không riêng tư nonprivate_clf = GaussianNB()# Huấn luyện mô hình nonprivate_clf.fit(X_train, y_train)print("The accuracy of the non-private model is ", nonprivate_clf.score(X_test, y_test))
The accuracy of the non-private model is 0.8333333333333334
from diffprivlib.models import GaussianNB as dp_GaussianNB# Xây dựng bộ phân loại riêng tư với constructor rỗng private_clf = dp_GaussianNB()# Huấn luyện mô hình và xem điểm số private_clf.fit(X_train, y_train)print("The accuracy of the private model is ", private_clf.score(X_test, y_test))
The accuracy of the private model is 0.7
PrivacyLeakWarning: Bounds have not been specified and will be calculated
on the data provided. This will result in additional privacy leakage.
To ensure differential privacy and no additional privacy leakage, specify bounds for each dimension.
"privacy leakage, specify bounds for each dimension.", PrivacyLeakWarning)
Để tránh rò rỉ dữ liệu, hãy truyền tham số bounds để thay thế giá trị min và max. Có thể là:
(0,100)
([0,1,0,2],[10,80,5,70])
# Đặt bounds bao phủ ít nhất giá trị min và max bounds = (X_train.min(axis=0) - 1, X_train.max(axis=0) + 1)# Xây dựng bộ phân loại với epsilon = 0.5 dp_clf = dp_GaussianNB(epsilon=0.5, bounds=bounds)# Huấn luyện mô hình và xem điểm số dp_clf.fit(X_train, y_train) print("The accuracy of the private model is ", private_clf.score(X_test, y_test))
The accuracy of the private model is 0.807000
# Import mô-đun random import random # Đặt min và max của bounds trong dữ liệu cộng thêm nhiễu bounds = (X_train.min(axis=0) - random.sample(range(0, 30), 12), X_train.max(axis=0) + random.sample(range(0, 30), 12))# Xây dựng bộ phân loại với epsilon = 0.5 dp_clf = dp_GaussianNB(epsilon=0.5, bounds=bounds)# Huấn luyện mô hình và xem điểm số dp_clf.fit(X_train, y_train) print("The accuracy of private classifier with bounds is ", dp_clf.score(X_test, y_test))
The accuracy of private classifier with bounds is 0.7544444444

Bảo mật dữ liệu và Ẩn danh trong Python