R glm trong trăn

Trong bài đăng này, bạn sẽ khám phá cách phát triển và đánh giá các mô hình mạng thần kinh bằng Keras cho bài toán hồi quy

Sau khi hoàn thành hướng dẫn từng bước này, bạn sẽ biết

  • Cách tải tập dữ liệu CSV và cung cấp tập dữ liệu đó cho Keras
  • Cách tạo mô hình mạng thần kinh với Keras cho vấn đề hồi quy
  • Cách sử dụng scikit-learning với Keras để đánh giá các mô hình bằng xác thực chéo
  • Cách thực hiện chuẩn bị dữ liệu để cải thiện kỹ năng với các mô hình Keras
  • Cách điều chỉnh cấu trúc liên kết mạng của các mô hình bằng Keras

Bắt đầu dự án của bạn với cuốn sách mới của tôi Học sâu với Python, bao gồm các hướng dẫn từng bước và các tệp mã nguồn Python cho tất cả các ví dụ

Bắt đầu nào

  • Tháng 6/2016. Xuất bản lần đầu
  • Cập nhật tháng 3/2017. Đã cập nhật cho Keras 2. 0. 2, TenorFlow 1. 0. 1 và Theano 0. 9. 0
  • Cập nhật tháng 3/2018. Đã thêm liên kết thay thế để tải xuống tập dữ liệu vì bản gốc dường như đã bị gỡ xuống
  • Cập nhật tháng 4/2018. Đã thay đổi đối số nb_epoch thành epochs
  • Cập nhật tháng 9/2019. Đã cập nhật cho Keras 2. 2. 5 API
  • Cập nhật tháng 7/2022. Cập nhật cho TensorFlow 2. cú pháp x với SciKeras

R glm trong trăn

Hướng dẫn hồi quy với thư viện học sâu Keras bằng Python
Ảnh của Salim Fadhley, bảo lưu một số quyền.

1. Mô tả vấn đề

Vấn đề mà chúng ta sẽ xem xét trong hướng dẫn này là bộ dữ liệu giá nhà ở Boston

Bạn có thể tải xuống bộ dữ liệu này và lưu nó trực tiếp vào công việc hiện tại của bạn với tên tệp là nhà ở. csv (cập nhật. tải dữ liệu từ đây)

Bộ dữ liệu mô tả 13 thuộc tính số của những ngôi nhà ở vùng ngoại ô Boston và liên quan đến việc lập mô hình giá nhà ở những vùng ngoại ô đó theo đơn vị hàng nghìn đô la. Như vậy, đây là một vấn đề mô hình dự đoán hồi quy. Các thuộc tính đầu vào bao gồm tỷ lệ tội phạm, tỷ lệ diện tích kinh doanh phi bán lẻ, nồng độ hóa chất, v.v.

Đây là một vấn đề được nghiên cứu kỹ lưỡng trong học máy. Thật thuận tiện khi làm việc vì tất cả các thuộc tính đầu vào và đầu ra đều là số và có 506 trường hợp để làm việc với

Hiệu suất hợp lý cho các mô hình được đánh giá bằng Lỗi bình phương trung bình (MSE) là khoảng 20 nghìn đô la bình phương (hoặc 4.500 đô la nếu bạn lấy căn bậc hai). Đây là một mục tiêu tốt để nhắm tới với mô hình mạng thần kinh của chúng tôi

Cần trợ giúp về Deep Learning trong Python?

Tham gia khóa học email 2 tuần miễn phí của tôi và khám phá MLP, CNN và LSTM (có mã)

Nhấp để đăng ký ngay và cũng nhận được phiên bản PDF Ebook miễn phí của khóa học

Bắt đầu khóa học nhỏ MIỄN PHÍ của bạn ngay bây giờ

2. Phát triển mô hình mạng lưới thần kinh cơ sở

Trong phần này, bạn sẽ tạo một mô hình mạng thần kinh cơ sở cho bài toán hồi quy

Hãy bắt đầu bằng cách bao gồm tất cả các chức năng và đối tượng bạn sẽ cần cho hướng dẫn này

1

2

3

4

5

6

7

8

9

nhập gấu trúc as pd

từ tensorflow. máy ảnh. mô hình nhập Tuần tự

từ tensorflow. máy ảnh. lớp nhập Mật độ

từ scikera. trình bao bọc nhập KerasRegressor

từ sklearn. model_selection nhập cross_val_score

từ sklearn. model_selection nhập KFold

từ sklearn. tiền xử lý nhập StandardScaler

từ sklearn. đường dẫn nhập Đường dẫn

.. .

Bây giờ bạn có thể tải tập dữ liệu của mình từ một tệp trong thư mục cục bộ

Trên thực tế, tập dữ liệu không ở định dạng CSV trong Kho lưu trữ học máy của UCI. Thay vào đó, các thuộc tính được phân tách bằng khoảng trắng. Bạn có thể tải cái này dễ dàng bằng thư viện gấu trúc. Sau đó, tách các thuộc tính đầu vào (X) và đầu ra (Y), giúp chúng dễ dàng lập mô hình hơn với Keras và scikit-learning

1

2

3

4

5

6

7

.. .

# tải tập dữ liệu

khung dữ liệu = pd. read_csv("housing. csv", delim_whitespace=True, header=None)

tập dữ liệu = khung dữ liệu. giá trị

# chia thành các biến đầu vào (X) và đầu ra (Y)

X = tập dữ liệu[. ,0. 13]

Y = tập dữ liệu[. ,13]

Bạn có thể tạo các mô hình Keras và đánh giá chúng bằng scikit-learning bằng cách sử dụng các đối tượng trình bao tiện dụng do thư viện Keras cung cấp. Điều này là đáng mong đợi, bởi vì scikit-learning vượt trội trong việc đánh giá các mô hình và sẽ cho phép bạn sử dụng các lược đồ đánh giá mô hình và chuẩn bị dữ liệu mạnh mẽ với rất ít dòng mã

Trình bao bọc Keras yêu cầu một hàm làm đối số. Chức năng này bạn phải xác định chịu trách nhiệm tạo mô hình mạng thần kinh được đánh giá

Dưới đây, bạn sẽ định nghĩa hàm để tạo mô hình cơ sở cần đánh giá. Nó là một mô hình đơn giản với một lớp ẩn duy nhất, được kết nối đầy đủ với cùng số lượng nơ-ron như các thuộc tính đầu vào (13). Mạng sử dụng các thông lệ tốt như chức năng kích hoạt bộ chỉnh lưu cho lớp ẩn. Không có chức năng kích hoạt nào được sử dụng cho lớp đầu ra vì đây là vấn đề hồi quy và bạn quan tâm đến việc dự đoán trực tiếp các giá trị số mà không cần chuyển đổi

Thuật toán tối ưu hóa ADAM hiệu quả được sử dụng và hàm mất lỗi bình phương trung bình được tối ưu hóa. Đây sẽ là cùng một số liệu bạn sẽ sử dụng để đánh giá hiệu suất của mô hình. Đó là một số liệu mong muốn vì việc lấy căn bậc hai sẽ cho một giá trị lỗi mà bạn có thể hiểu trực tiếp trong ngữ cảnh của vấn đề (hàng nghìn đô la)

Nếu bạn chưa quen với Keras hoặc học sâu, hãy xem hướng dẫn Keras này

1

2

3

4

5

6

7

8

9

10

.. .

# xác định mô hình cơ sở

def baseline_model().

#tạo mẫu

mô hình = Tuần tự()

mô hình. thêm(Dày đặc(13, input_shape=(13,), kernel_initializer='normal', activation='relu'))

mô hình. thêm(Dày đặc(1, kernel_initializer='normal'))

# Biên dịch mô hình

mô hình. biên dịch(mất mát=', optimizer='adam')

trả về mô hình

Đối tượng bao bọc Keras được sử dụng trong scikit-learning làm công cụ ước tính hồi quy được gọi là KerasRegressor. Bạn tạo một thể hiện và truyền cho nó cả tên của hàm để tạo mô hình mạng thần kinh và một số tham số để truyền cho hàm fit() của mô hình sau này, chẳng hạn như số lượng kỷ nguyên và kích thước lô. Cả hai đều được đặt thành mặc định hợp lý

Bước cuối cùng là đánh giá mô hình cơ sở này. Bạn sẽ sử dụng xác thực chéo 10 lần để đánh giá mô hình

1

2

3

4

.. .

kfold = KFold(n_splits=10)

kết quả = cross_val_score(công cụ ước tính, X, Y, cv=kfold, scoring='neg_mean_squared_error')

in("Kết quả. %. 2f (%. 2f) MSE" % (kết quả. trung bình(), kết quả . .std()))

Sau khi liên kết tất cả lại với nhau, ví dụ hoàn chỉnh được liệt kê bên dưới

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

# Ví dụ hồi quy với Bộ dữ liệu Boston. đường cơ sở

từ gấu trúc nhập read_csv

từ tensorflow. máy ảnh. mô hình nhập Tuần tự

từ tensorflow. máy ảnh. lớp nhập Mật độ

từ scikera. trình bao bọc nhập KerasRegressor

từ sklearn. model_selection nhập cross_val_score

từ sklearn. model_selection nhập KFold

# tải tập dữ liệu

dataframe = read_csv("housing. csv", delim_whitespace=True, header=None)

tập dữ liệu = khung dữ liệu. giá trị

# chia thành các biến đầu vào (X) và đầu ra (Y)

X = tập dữ liệu[. ,0. 13]

Y = tập dữ liệu[. ,13]

# xác định mô hình cơ sở

def baseline_model().

#tạo mẫu

mô hình = Tuần tự()

mô hình. thêm(Dày đặc(13, input_shape=(13,), kernel_initializer='normal', activation='relu'))

mô hình. thêm(Dày đặc(1, kernel_initializer='normal'))

# Biên dịch mô hình

mô hình. biên dịch(mất mát=', optimizer='adam')

trả về mô hình

# đánh giá mô hình

công cụ ước tính = KerasRegressor(mô hình=baseline_model, epochs=100, batch_size=5, verbose=0)

kfold = KFold(n_splits=10)

kết quả = cross_val_score(công cụ ước tính, X, Y, cv=kfold, scoring='neg_mean_squared_error')

in("Đường cơ sở. %. 2f (%. 2f) MSE" % (kết quả. trung bình(), kết quả . .std()))

Chạy mã này cho bạn ước tính về hiệu suất của mô hình đối với sự cố đối với dữ liệu không nhìn thấy

Ghi chú. Kết quả của bạn có thể thay đổi do tính chất ngẫu nhiên của thuật toán hoặc quy trình đánh giá hoặc sự khác biệt về độ chính xác của các con số. Cân nhắc chạy ví dụ một vài lần và so sánh kết quả trung bình

Ghi chú. Lỗi bình phương trung bình là âm vì scikit-learning đảo ngược để số liệu được tối đa hóa thay vì giảm thiểu. Bạn có thể bỏ qua dấu hiệu của kết quả

Kết quả báo cáo lỗi bình phương trung bình, bao gồm độ lệch trung bình và độ lệch chuẩn (phương sai trung bình) trên tất cả mười lần đánh giá xác thực chéo

1

đường cơ sở. -32. 65 (23. 33) MSE

3. Lập mô hình bộ dữ liệu chuẩn hóa

Một mối quan tâm quan trọng với bộ dữ liệu giá nhà ở Boston là tất cả các thuộc tính đầu vào đều khác nhau về quy mô vì chúng đo lường các đại lượng khác nhau

Hầu như luôn luôn tốt để chuẩn bị dữ liệu của bạn trước khi lập mô hình dữ liệu bằng mô hình mạng thần kinh

Tiếp tục từ mô hình cơ sở ở trên, bạn có thể đánh giá lại mô hình tương tự bằng cách sử dụng phiên bản tiêu chuẩn hóa của tập dữ liệu đầu vào

Bạn có thể sử dụng khung Đường ống của scikit-learn để thực hiện tiêu chuẩn hóa trong quá trình đánh giá mô hình trong mỗi lần xác thực chéo. Điều này đảm bảo rằng không có rò rỉ dữ liệu từ mỗi lần xác thực chéo của bộ thử nghiệm vào dữ liệu huấn luyện

Đoạn mã dưới đây tạo ra một đường dẫn scikit-learning, trước tiên chuẩn hóa tập dữ liệu, sau đó tạo và đánh giá mô hình mạng thần kinh cơ sở

1

2

3

4

5

6

7

8

9

.. .

# đánh giá mô hình với tập dữ liệu chuẩn hóa

công cụ ước tính = []

công cụ ước tính. chắp thêm(('chuẩn hóa', StandardScaler()))

công cụ ước tính. chắp thêm(('mlp', KerasRegressor(model=baseline_model, epochs=50, batch_size=5, verbose=0)))

đường ống = đường ống(công cụ ước tính)

kfold = KFold(n_splits=10)

kết quả = cross_val_score(đường ống, X, Y, cv=kfold, scoring='neg_mean_squared_error')

in("Chuẩn hóa. %. 2f (%. 2f) MSE" % (kết quả. trung bình(), kết quả . .std()))

Sau khi liên kết điều này lại với nhau, ví dụ hoàn chỉnh được liệt kê bên dưới

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

# Ví dụ hồi quy với Bộ dữ liệu Boston. tiêu chuẩn hóa

từ gấu trúc nhập read_csv

từ tensorflow. máy ảnh. mô hình nhập Tuần tự

từ tensorflow. máy ảnh. lớp nhập Mật độ

từ scikera. trình bao bọc nhập KerasRegressor

từ sklearn. model_selection nhập cross_val_score

từ sklearn. model_selection nhập KFold

từ sklearn. tiền xử lý nhập StandardScaler

từ sklearn. đường dẫn nhập Đường dẫn

# tải tập dữ liệu

dataframe = read_csv("housing. csv", delim_whitespace=True, header=None)

tập dữ liệu = khung dữ liệu. giá trị

# chia thành các biến đầu vào (X) và đầu ra (Y)

X = tập dữ liệu[. ,0. 13]

Y = tập dữ liệu[. ,13]

# xác định mô hình cơ sở

def baseline_model().

#tạo mẫu

mô hình = Tuần tự()

mô hình. thêm(Dày đặc(13, input_shape=(13,), kernel_initializer='normal', activation='relu'))

mô hình. thêm(Dày đặc(1, kernel_initializer='normal'))

# Biên dịch mô hình

mô hình. biên dịch(mất mát=', optimizer='adam')

trả về mô hình

# đánh giá mô hình với tập dữ liệu chuẩn hóa

công cụ ước tính = []

công cụ ước tính. chắp thêm(('chuẩn hóa', StandardScaler()))

công cụ ước tính. chắp thêm(('mlp', KerasRegressor(model=baseline_model, epochs=50, batch_size=5, verbose=0)))

đường ống = đường ống(công cụ ước tính)

kfold = KFold(n_splits=10)

kết quả = cross_val_score(đường ống, X, Y, cv=kfold, scoring='neg_mean_squared_error')

in("Chuẩn hóa. %. 2f (%. 2f) MSE" % (kết quả. trung bình(), kết quả . .std()))

Ghi chú. Kết quả của bạn có thể thay đổi do tính chất ngẫu nhiên của thuật toán hoặc quy trình đánh giá hoặc sự khác biệt về độ chính xác của các con số. Cân nhắc chạy ví dụ một vài lần và so sánh kết quả trung bình

Việc chạy ví dụ cung cấp hiệu suất được cải thiện so với mô hình cơ sở không có dữ liệu được chuẩn hóa, loại bỏ lỗi

1

tiêu chuẩn hóa. -29. 54 (27. 87) MSE

Một phần mở rộng khác của phần này sẽ là áp dụng tương tự thay đổi tỷ lệ cho biến đầu ra, chẳng hạn như chuẩn hóa nó thành phạm vi 0-1 và sử dụng hàm Sigmoid hoặc chức năng kích hoạt tương tự trên lớp đầu ra để thu hẹp các dự đoán đầu ra về cùng phạm vi

4. Điều chỉnh cấu trúc liên kết mạng thần kinh

Nhiều mối quan tâm có thể được tối ưu hóa cho mô hình mạng thần kinh

Có lẽ điểm đòn bẩy lớn nhất chính là cấu trúc của mạng, bao gồm số lớp và số nơ ron trong mỗi lớp.

Trong phần này, bạn sẽ đánh giá hai cấu trúc liên kết mạng bổ sung nhằm nỗ lực cải thiện hơn nữa hiệu suất của mô hình. Bạn sẽ xem xét cả cấu trúc liên kết mạng sâu hơn và rộng hơn

4. 1. Đánh giá cấu trúc liên kết mạng sâu hơn

Một cách để cải thiện hiệu suất của mạng thần kinh là thêm nhiều lớp hơn. Điều này có thể cho phép mô hình trích xuất và kết hợp lại các tính năng bậc cao hơn được nhúng trong dữ liệu

Trong phần này, bạn sẽ đánh giá hiệu quả của việc thêm một lớp ẩn vào mô hình. Điều này dễ dàng như việc xác định một chức năng mới để tạo mô hình sâu hơn này, được sao chép từ mô hình cơ sở của bạn ở trên. Sau đó, bạn có thể chèn một dòng mới sau lớp ẩn đầu tiên—trong trường hợp này, với khoảng một nửa số nơ-ron

1

2

3

4

5

6

7

8

9

10

11

.. .

# xác định mô hình

def larger_model().

#tạo mẫu

mô hình = Tuần tự()

mô hình. thêm(Dày đặc(13, input_shape=(13,), kernel_initializer='normal', activation='relu'))

mô hình. thêm(Dày đặc(6, kernel_initializer='normal', activation='relu'))

mô hình. thêm(Dày đặc(1, kernel_initializer='normal'))

# Biên dịch mô hình

mô hình. biên dịch(mất mát=', optimizer='adam')

trả về mô hình

Cấu trúc liên kết mạng của bạn bây giờ trông như thế này

1

13 đầu vào -> [13 -> 6] -> 1 đầu ra

Bạn có thể đánh giá cấu trúc liên kết mạng này theo cách tương tự như trên, đồng thời sử dụng tiêu chuẩn hóa bộ dữ liệu được hiển thị ở trên để cải thiện hiệu suất

1

2

3

4

5

6

7

8

.. .

công cụ ước tính = []

công cụ ước tính. chắp thêm(('chuẩn hóa', StandardScaler()))

công cụ ước tính. chắp thêm(('mlp', KerasRegressor(model=larger_model, epochs=50, batch_size=5, verbose=0)))

đường ống = đường ống(công cụ ước tính)

kfold = KFold(n_splits=10)

kết quả = cross_val_score(đường ống, X, Y, cv=kfold, scoring='neg_mean_squared_error')

in("Lớn hơn. %. 2f (%. 2f) MSE" % (kết quả. trung bình(), kết quả . .std()))

Sau khi liên kết điều này lại với nhau, ví dụ hoàn chỉnh được liệt kê bên dưới

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

# Ví dụ hồi quy với Bộ dữ liệu Boston. Chuẩn hóa và lớn hơn

từ gấu trúc nhập read_csv

từ tensorflow. máy ảnh. mô hình nhập Tuần tự

từ tensorflow. máy ảnh. lớp nhập Mật độ

từ scikera. trình bao bọc nhập KerasRegressor

từ sklearn. model_selection nhập cross_val_score

từ sklearn. model_selection nhập KFold

từ sklearn. tiền xử lý nhập StandardScaler

từ sklearn. đường dẫn nhập Đường dẫn

# tải tập dữ liệu

dataframe = read_csv("housing. csv", delim_whitespace=True, header=None)

tập dữ liệu = khung dữ liệu. giá trị

# chia thành các biến đầu vào (X) và đầu ra (Y)

X = tập dữ liệu[. ,0. 13]

Y = tập dữ liệu[. ,13]

# xác định mô hình

def larger_model().

#tạo mẫu

mô hình = Tuần tự()

mô hình. thêm(Dày đặc(13, input_shape=(13,), kernel_initializer='normal', activation='relu'))

mô hình. thêm(Dày đặc(6, kernel_initializer='normal', activation='relu'))

mô hình. thêm(Dày đặc(1, kernel_initializer='normal'))

# Biên dịch mô hình

mô hình. biên dịch(mất mát=', optimizer='adam')

trả về mô hình

# đánh giá mô hình với tập dữ liệu chuẩn hóa

công cụ ước tính = []

công cụ ước tính. chắp thêm(('chuẩn hóa', StandardScaler()))

công cụ ước tính. chắp thêm(('mlp', KerasRegressor(model=larger_model, epochs=50, batch_size=5, verbose=0)))

đường ống = đường ống(công cụ ước tính)

kfold = KFold(n_splits=10)

kết quả = cross_val_score(đường ống, X, Y, cv=kfold, scoring='neg_mean_squared_error')

in("Lớn hơn. %. 2f (%. 2f) MSE" % (kết quả. trung bình(), kết quả . .std()))

Ghi chú. Kết quả của bạn có thể thay đổi do tính chất ngẫu nhiên của thuật toán hoặc quy trình đánh giá hoặc sự khác biệt về độ chính xác của các con số. Cân nhắc chạy ví dụ một vài lần và so sánh kết quả trung bình

Chạy mô hình này cho thấy hiệu suất được cải thiện hơn nữa từ 28 xuống còn 24 nghìn đô la bình phương

1

lớn hơn. -22. 83 (25. 33) MSE

4. 2. Đánh giá cấu trúc liên kết mạng rộng hơn

Một cách tiếp cận khác để tăng khả năng biểu diễn của mô hình là tạo ra một mạng lưới rộng hơn

Trong phần này, bạn sẽ đánh giá hiệu quả của việc giữ một kiến ​​trúc mạng nông và tăng gần gấp đôi số nơ ron trong một lớp ẩn

Một lần nữa, tất cả những gì bạn cần làm là xác định một chức năng mới để tạo mô hình mạng thần kinh của bạn. Tại đây, bạn sẽ tăng số lượng tế bào thần kinh trong lớp ẩn so với mô hình cơ sở từ 13 lên 20

1

2

3

4

5

6

7

8

9

10

.. .

# xác định mô hình rộng hơn

def wider_model().

#tạo mẫu

mô hình = Tuần tự()

mô hình. thêm(Dày đặc(20, input_shape=(13,), kernel_initializer='normal', activation='relu'))

mô hình. thêm(Dày đặc(1, kernel_initializer='normal'))

# Biên dịch mô hình

mô hình. biên dịch(mất mát=', optimizer='adam')

trả về mô hình

Cấu trúc liên kết mạng của bạn bây giờ trông như thế này

1

13 đầu vào -> [20] -> 1 đầu ra

Bạn có thể đánh giá cấu trúc liên kết mạng rộng hơn bằng cách sử dụng sơ đồ tương tự như trên

1

2

3

4

5

6

7

8

.. .

công cụ ước tính = []

công cụ ước tính. chắp thêm(('chuẩn hóa', StandardScaler()))

công cụ ước tính. chắp thêm(('mlp', KerasRegressor(model=wider_model, epochs=100, batch_size=5, verbose=0)))

đường ống = đường ống(công cụ ước tính)

kfold = KFold(n_splits=10)

kết quả = cross_val_score(đường ống, X, Y, cv=kfold, scoring='neg_mean_squared_error')

in("Rộng hơn. %. 2f (%. 2f) MSE" % (kết quả. trung bình(), kết quả . .std()))

Sau khi liên kết điều này lại với nhau, ví dụ hoàn chỉnh được liệt kê bên dưới

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

# Ví dụ hồi quy với Bộ dữ liệu Boston. Chuẩn hóa và rộng hơn

từ gấu trúc nhập read_csv

từ tensorflow. máy ảnh. mô hình nhập Tuần tự

từ tensorflow. máy ảnh. lớp nhập Mật độ

từ scikera. trình bao bọc nhập KerasRegressor

từ sklearn. model_selection nhập cross_val_score

từ sklearn. model_selection nhập KFold

từ sklearn. tiền xử lý nhập StandardScaler

từ sklearn. đường dẫn nhập Đường dẫn

# tải tập dữ liệu

dataframe = read_csv("housing. csv", delim_whitespace=True, header=None)

tập dữ liệu = khung dữ liệu. giá trị

# chia thành các biến đầu vào (X) và đầu ra (Y)

X = tập dữ liệu[. ,0. 13]

Y = tập dữ liệu[. ,13]

# xác định mô hình rộng hơn

def wider_model().

#tạo mẫu

mô hình = Tuần tự()

mô hình. thêm(Dày đặc(20, input_shape=(13,), kernel_initializer='normal', activation='relu'))

mô hình. thêm(Dày đặc(1, kernel_initializer='normal'))

# Biên dịch mô hình

mô hình. biên dịch(mất mát=', optimizer='adam')

trả về mô hình

# đánh giá mô hình với tập dữ liệu chuẩn hóa

công cụ ước tính = []

công cụ ước tính. chắp thêm(('chuẩn hóa', StandardScaler()))

công cụ ước tính. chắp thêm(('mlp', KerasRegressor(model=wider_model, epochs=100, batch_size=5, verbose=0)))

đường ống = đường ống(công cụ ước tính)

kfold = KFold(n_splits=10)

kết quả = cross_val_score(đường ống, X, Y, cv=kfold, scoring='neg_mean_squared_error')

in("Rộng hơn. %. 2f (%. 2f) MSE" % (kết quả. trung bình(), kết quả . .std()))

Ghi chú. Kết quả của bạn có thể thay đổi do tính chất ngẫu nhiên của thuật toán hoặc quy trình đánh giá hoặc sự khác biệt về độ chính xác của các con số. Cân nhắc chạy ví dụ một vài lần và so sánh kết quả trung bình

Xây dựng mô hình cho thấy lỗi giảm hơn nữa xuống còn khoảng 21 nghìn đô la bình phương. Đây không phải là một kết quả xấu cho vấn đề này

1

Rộng hơn. -21. 71 (24. 39) MSE

Có thể khó đoán rằng một mạng rộng hơn sẽ vượt trội hơn một mạng sâu hơn về vấn đề này. Kết quả chứng minh tầm quan trọng của thử nghiệm thực nghiệm trong việc phát triển các mô hình mạng thần kinh

Bản tóm tắt

Trong bài đăng này, bạn đã khám phá ra thư viện học sâu Keras để mô hình hóa các vấn đề hồi quy

Thông qua hướng dẫn này, bạn đã học cách phát triển và đánh giá các mô hình mạng thần kinh, bao gồm

  • Cách tải dữ liệu và phát triển mô hình cơ sở
  • Cách nâng cao hiệu suất bằng các kỹ thuật chuẩn bị dữ liệu như tiêu chuẩn hóa
  • Cách thiết kế và đánh giá các mạng với các cấu trúc liên kết khác nhau về một vấn đề

Bạn có câu hỏi nào về thư viện học sâu Keras hoặc bài đăng này không?