Hướng dẫn python code search - tìm kiếm mã python
Nội dung chính Show Nội dung chính
Giới thiệuNội dung chính Điều kiện tiên quyếtCài đặt Cài đặtTìm kiếm Grid là gì?
Sự kết luận $ pip install numpy pandas tensorflow keras scikit-learn Nội dung chính Tìm kiếm Grid là gì?Triển khai Tìm kiếm Lưới Học sâu thực tế cho thị giác máy tính với Python
Nội dung chính Trong hướng dẫn này, chúng ta sẽ nói về một thuật toán tối ưu hóa (hoặc tự động hóa) rất mạnh mẽ, tức là Thuật toán Tìm kiếm Lưới. Nó được sử dụng phổ biến nhất để điều chỉnh siêu tham số trong các mô hình học máy. Chúng ta sẽ tìm hiểu cách triển khai nó bằng Python, cũng như áp dụng nó trong một ứng dụng thực tế để xem nó có thể giúp chúng ta chọn các tham số tốt nhất cho mô hình của mình và cải thiện độ chính xác của nó như thế nào. Vì vậy, chúng ta hãy bắt đầu. Triển khai Tìm kiếm LướiHọc sâu thực tế cho thị giác máy tính với Python Đào tạo Mô hình mà không cần Tìm kiếm Lướiread_csv() bạn có thể nhập trực tiếp tập dữ liệu từ một tài nguyên trực tuyến. Tối ưu hóa Siêu tham số bằng Grid Search from sklearn.model_selection import GridSearchCV, KFold from keras.models import Sequential from keras.layers import Dense, Dropout from keras.wrappers.scikit_learn import KerasClassifier from keras.optimizers import Adam import sys import pandas as pd import numpy as np Sự kết luận columns = ['num_pregnant', 'glucose_concentration', 'blood_pressure', 'skin_thickness', 'serum_insulin', 'BMI', 'pedigree_function', 'age', 'class'] data_path = "https://raw.githubusercontent.com/mkhalid1/Machine-Learning-Projects-Python-/master/Grid%20Search/pima-indians-diabetes.csv" df = pd.read_csv(data_path, names=columns) Nội dung chính df.head() Output: Trong hướng dẫn này, chúng ta sẽ nói về một thuật toán tối ưu hóa (hoặc tự động hóa) rất mạnh mẽ, tức là Thuật toán Tìm kiếm Lưới. Nó được sử dụng phổ biến nhất để điều chỉnh siêu tham số trong các mô hình học máy. Chúng ta sẽ tìm hiểu cách triển khai nó bằng Python, cũng như áp dụng nó trong một ứng dụng thực tế để xem nó có thể giúp chúng ta chọn các tham số tốt nhất cho mô hình của mình và cải thiện độ chính xác của nó như thế nào. Vì vậy, chúng ta hãy bắt đầu.NaNs với 0: # Remove first 9 non-data rows df = df.iloc[9:] # Replace NaN (Not a Number) values with 0 in each column for col in columns: df[col].replace(0, np.NaN, inplace=True) df.dropna(inplace=True) # Drop all rows with missing values dataset = df.values # Convert dataframe to numpy array Để làm theo hướng dẫn này, bạn phải có hiểu biết cơ bản về Python hoặc một số ngôn ngữ lập trình khác. Việc bạn có một số kiến thức cơ bản về máy học được ưu tiên, nhưng không cần thiết. Ngoài ra, bài viết này thân thiện với người mới bắt đầu và có thể được theo dõi bởi bất kỳ ai. X = dataset[:,0:8] Y = dataset[:, 8].astype(int) # Normalize the data using sklearn StandardScaler from sklearn.preprocessing import StandardScaler scaler = StandardScaler().fit(X) # Transform and display the training data X_standardized = scaler.transform(X) data = pd.DataFrame(X_standardized) Học sâu thực tế cho thị giác máy tính với PythonĐào tạo Mô hình mà không cần Tìm kiếm Lưới Tối ưu hóa Siêu tham số bằng Grid Search Sự kết luận def create_model(learn_rate, dropout_rate): # Create model model = Sequential() model.add(Dense(8, input_dim=8, kernel_initializer="normal", activation='relu')) model.add(Dropout(dropout_rate)) model.add(Dense(4, input_dim=8, kernel_initializer="normal", activation='relu')) model.add(Dropout(dropout_rate)) model.add(Dense(1, activation='sigmoid')) # Compile the model adam = Adam(lr=learn_rate) model.compile(loss="binary_crossentropy", optimizer=adam, metrics=['accuracy']) return model Đây là tất cả mã mà bạn cần chạy để tải tập dữ liệu, xử lý trước và tạo mô hình học máy của bạn. Vì chúng tôi chỉ quan tâm đến việc xem chức năng của Grid Search, tôi đã không thực hiện phân tách đào tạo / kiểm tra và chúng tôi sẽ điều chỉnh mô hình trên toàn bộ tập dữ liệu. Trong phần tiếp theo, chúng ta sẽ bắt đầu xem Grid Search giúp cuộc sống của chúng ta dễ dàng hơn bằng cách tối ưu hóa các tham số của chúng ta như thế nào. Đào tạo Mô hình mà không cần Tìm kiếm LướiTrong đoạn mã dưới đây, chúng tôi sẽ tạo một mô hình bằng cách sử dụng các giá trị tham số mà chúng tôi đã quyết định một cách ngẫu nhiên hoặc dựa trên trực giác của chúng tôi và xem mô hình của chúng tôi hoạt động như thế nào: # Declare parameter values dropout_rate = 0.1 epochs = 1 batch_size = 20 learn_rate = 0.001 # Create the model object by calling the create_model function we created above model = create_model(learn_rate, dropout_rate) # Fit the model onto the training data model.fit(X_standardized, Y, batch_size=batch_size, epochs=epochs, verbose=1) Output: Epoch 1/1 130/130 [==============================] - 0s 2ms/step - loss: 0.6934 - accuracy: 0.6000 Độ chính xác mà chúng tôi nhận được, như bạn có thể thấy bên dưới, là 60.00%. Đây là mức khá thấp, nhưng không có gì phải lo lắng! Chúng tôi vẫn có Tìm kiếm theo lưới để thử và tiết kiệm trong ngày. Vì vậy, hay thực hiện ngay bây giơ.60.00%. Đây là mức khá thấp, nhưng không có gì phải lo lắng! Chúng tôi vẫn có Tìm kiếm theo lưới để thử và tiết kiệm trong ngày. Vì vậy, hay thực hiện ngay bây giơ. Tối ưu hóa Siêu tham số bằng Grid SearchNếu bạn không sử dụng Grid Search, bạn có thể gọi trực tiếp fit() trên mô hình mà chúng ta đã tạo ở trên. Tuy nhiên, để sử dụng Grid Search, chúng ta cần chuyển một số tham số vào create_model(). Hơn nữa, chúng ta cần khai báo lưới của chúng ta với các tùy chọn khác nhau mà chúng ta muốn thử cho mỗi tham số. Hãy làm điều đó theo từng phần.fit() trên mô hình mà chúng ta đã tạo ở trên. Tuy nhiên, để sử dụng Grid Search, chúng ta cần chuyển một số tham số vào create_model(). Hơn nữa, chúng ta cần khai báo lưới của chúng ta với các tùy chọn khác nhau mà chúng ta muốn thử cho mỗi tham số. Hãy làm điều đó theo từng phần. Đầu tiên chúng tôi sửa đổi create_model() để chấp nhận các tham số từ hàm gọi:create_model() để chấp nhận các tham số từ hàm gọi: def create_model(learn_rate, dropout_rate): # Create model model = Sequential() model.add(Dense(8, input_dim=8, kernel_initializer="normal", activation='relu')) model.add(Dropout(dropout_rate)) model.add(Dense(4, input_dim=8, kernel_initializer="normal", activation='relu')) model.add(Dropout(dropout_rate)) model.add(Dense(1, activation='sigmoid')) # Compile the model adam = Adam(lr=learn_rate) model.compile(loss="binary_crossentropy", optimizer=adam, metrics=['accuracy']) return model # Create the model model = KerasClassifier(build_fn=create_model, verbose=1) Bây giờ, chúng tôi đã sẵn sàng triển khai thuật toán Tìm kiếm theo lưới của mình và phù hợp với tập dữ liệu trên đó: from sklearn.model_selection import GridSearchCV, KFold from keras.models import Sequential from keras.layers import Dense, Dropout from keras.wrappers.scikit_learn import KerasClassifier from keras.optimizers import Adam import sys import pandas as pd import numpy as np0 Output: from sklearn.model_selection import GridSearchCV, KFold from keras.models import Sequential from keras.layers import Dense, Dropout from keras.wrappers.scikit_learn import KerasClassifier from keras.optimizers import Adam import sys import pandas as pd import numpy as np1 Trong đầu ra, chúng ta có thể thấy nó cung cấp cho chúng ta sự kết hợp tham số mang lại độ chính xác tốt nhất. Có thể nói rằng Grid Search khá dễ thực hiện bằng Python và tiết kiệm cho chúng tôi rất nhiều thời gian, về mặt sức lao động của con người. Bạn chỉ có thể liệt kê tất cả các tham số bạn muốn điều chỉnh, khai báo các giá trị sẽ được kiểm tra, chạy mã của bạn và quên nó đi. Không cần thêm đầu vào từ phía bạn. Sau khi tìm thấy kết hợp thông số tốt nhất, bạn có thể chỉ cần sử dụng kết hợp đó cho mô hình cuối cùng của mình. Sự kết luậnTóm lại, chúng tôi đã tìm hiểu Grid Search là gì, cách nó có thể giúp chúng tôi tối ưu hóa mô hình của mình và những lợi ích mà nó mang lại như tự động hóa. Hơn nữa, chúng tôi đã học cách triển khai nó trong một vài dòng mã bằng Ngôn ngữ Python. Để xem hiệu quả của nó, chúng tôi cũng đã đào tạo mô hình Học máy có và không thực hiện Tìm kiếm theo lưới và độ chính xác cao hơn 19% với Tìm kiếm theo lưới. |