Hướng dẫn python code search - tìm kiếm mã python

  • Giới thiệu
  • Điều kiện tiên quyết
  • Cài đặt
  • 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
    • Đà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

Nội dung chính

Nội dung chính

  • Giới thiệu
  • Điều kiện tiên quyết
  • Cài đặt
  • 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
  • Sự kết luận

  • Giới thiệu
  • Điều kiện tiên quyết
  • Cài đặt
  • 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
  • Sự kết luận

Giới thiệu

Nội dung chính

Điều kiện tiên quyết

Cài đặt

Cài đặt

Tìm kiếm Grid là gì?

  1. Triển khai Tìm kiếm Lưới
  2. Học sâu thực tế cho thị giác máy tính với Python
  3. Đào tạo Mô hình mà không cần Tìm kiếm Lưới
  4. Tối ưu hóa Siêu tham số bằng Grid Search
  5. Scikit-Learn

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

  1. Đào tạo Mô hình mà không cần Tìm kiếm Lưới
  2. Tối ưu hóa Siêu tham số bằng Grid Search
  3. Sự kết luận

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ưới

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ướ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ưới

Trong đ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 Search

Nế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 np
0

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 np
1

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ận

Tó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.