1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài tập nhóm cuối kỳ môn học khoa học dữ liệu cho kinh doanh

14 2 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 14
Dung lượng 867,19 KB

Nội dung

HO CHi MINH ——ewlaw-—— TRUGNG DAI HOC NGAN HANG THANH PHO HO CHi MINH BAI TAP NHOM CUOI KY Mé6n hoc: KHOA HOC DU LIEU CHO KINH DOANH PHAN THUC HANH —- NHÓM 14 Giảng viên hướng dẫn

Trang 1

NGÂN HÀNG NHÀ NƯỚC VIETNAM BỘ GIÁO DỤC VÀ ĐÀO TẠO

DAI HOC NGAN HANG TP HO CHi MINH

——ewlaw-——

TRUGNG DAI HOC NGAN HANG THANH PHO HO CHi MINH

BAI TAP NHOM CUOI KY Mé6n hoc: KHOA HOC DU LIEU CHO KINH DOANH

PHAN THUC HANH —- NHÓM 14

Giảng viên hướng dẫn: ThS Huỳnh Đỗ Bảo Châu

Sinh viên thực hiện:

Hồ Võ Xuyến Chỉ : 050609211856

Nguyễn Trần Mỹ Chi: 050609211857 Nguyễn Hồng Đào : 050609211882

Trang 2

1) Mô tả về tập dữ liệu và mô tả bài toán cần thực hiện

# import các thư viện hàm đê” phân tích dữ Liệu

import numpy as np

import pandas as pd

def convert_date(x): # vié’t riêng 1 hàm định dạng ngày tháng

# Nạp dữ Liệu vào dataframe

data = pd.read_csv('garments_worker_productivity.csv',index_coL=09)

# Sao chép dữ Liệu gôc cu `a biê“n data ra biên mới

df = data

df = df.iloc[0:1000] #chon đoạn dữ liệu sã sư” dụng la 1000 dòng đâ`u tiên

print (df)

smv \

date

26.16

3.94

11.41

11.41

25.90

30.33

11.61

3.94

2.90

26.66

wip over_time incentive idle time idle men \ date

Trang 3

1/1/2015 968.0 3660 58 0.0 0

date

[1000 rows x 14 columns]

df.describe()

count 1000.00000 1000.000000 1000.000000 587.0600060

no_of_style_ change \

count 1000.000000 1000.000000 1000.000000 1000.00000

1000 600000

mean 4738.430000 26.56400080 0.860000 0.35700

0.149000

std 3463 450111 31.301369 13 900382 3.17831

0.439309

0.000000

25% 1440 800000 0.000000 0.000000 0.00000

0.000000

Trang 4

50% 4080 000000 0.000000 0.000000 0.00000

0.000000

75% 6960 000000 50.000000 0.000000 0.00000

0.000000

max 25920.000000 138.000000 300.000000 45 00000

2.000000

count 1000 000000 1000 000000

# M6 ta’ kié’u dit liéu

df.dtypes

###Mô tả ý nghĩa các thuộc tính 01 ngày: Ngày tính bằng MM-DD-YYYY 02 ngày : Ngày

trong tuần 03 quý : Một phần của tháng Một tháng được chia thành bốn quý 04 bộ phận:

Bộ phận liên kết với ví dụ 05 team_no : Liên kết số nhóm với phiên bản 06

no_of_ workers : Số lượng công nhân trong mỗi đội 07 no_of style_ change : Số lần thay đổi kiểu dáng của một sản phẩm cụ thể 08 targeted_productivity : Năng suất mục tiêu do Cơ quan đặt ra cho mỗi nhóm cho mỗi ngày 09 smv: Giá trị phút tiêu chuẩn, đó là thời gian

dang cho sản phẩm 11 over_time : Thể hiện số giờ làm thêm của mỗi đội tính bằng phút

12 khuyến khích : Đại diện cho số tiền khuyến khích tài chính cho phép hoặc thúc đẩy

một quá trình hành động cụ thể 13 idle_time : Lượng thời gian khi quá trình sẳn xuất bị

gián đoạn do một số lý do 14 idle_men : SỐ lượng công nhân nhàn rỗi do gián đoạn sản xuất 15 actual productivity : % năng suất thực tế được cung cấp bởi người lao động Nó

dao động từ 0-1

Trang 5

2) Tiền xử lý dữ liệu (Data Preprocessing)

# Đô'i tên dữ Liệu

ty':'ActuaLProduct'})

# Xu’ li dữ Liệu khuyê ˆt

from numpy.core.numeric import NaN

print (df1)

smv \

date

26.16

3.94

11.41

11.41

25.90

30.33

11.61

3.94

2.90

26.66

wip over_time incentive idle time idle men \ date

Trang 6

date

1/1/2015

1/1/2015

1/1/2015

1/1/2015

1/1/2015

3/1/2015

3/1/2015

3/1/2015

3/1/2015

3/1/2015

no_of_style_ change NumWorkers

[1000 rows x 14 columns]

59

8

30

30

56

58

57

8

8

57

# Bo’ toan bé dong coé dit liéu null

df1.dropna()

date

1/1/2015

26.16

1/1/2015

11.41

1/1/2015

11.41

1/1/2015

25.90

1/1/2015

25.90

3/1/2015

21.82

3/1/2015

26.66

3/1/2015

30.33

3/1/2015

11.61

3/1/2015

26.66

date

quarter department

Quarter1

Quarter1

Quarter1

Quarter1

Quarterl

Quarter1

Quarter1

Quarter1

Quarter1

Quarterl

wip

1108.0

sweing sweing sweing sweing sweing

sweing sweing sweing sweing sweing over_time

7080

day

Thursday Thursday Thursday Thursday Thursday

Sunday Sunday Sunday Sunday Sunday incentive

98

ActualProduct

team

11

12

10

11

.940725 .886500

800570

800570 800382

0.683551 0.682433 0.673083 0.664583 0.600240

targeted_productivity

idle time idle men \

Trang 7

1/1/2015 968.0

1/1/2015 968.0

1/1/2015 1170.0

1/1/2015 984.0

3/1/2015 1393.0

3/1/2015 1578.0

3/1/2015 254.0

3/1/2015 347.0

3/1/2015 692.0

no_of_style_ change NumWorkers

date

1/1/2015

1/1/2015

1/1/2015

1/1/2015

1/1/2015

3/1/2015

3/1/2015

3/1/2015

3/1/2015

3/1/2015

[587 rows x 14 columns]

3660

3660

1920

6720

5640

6840

1800

0

6840

print ((dfl.describe()).transpose())

team

targeted_productivity

smv

wip

over_time

incentive

idle_time

idle_men

no_of_style_change

NumWorkers

ActualProduct

max

team

12 900000

targeted_productivity

0.800000

smv

54.560068

"30 0.0 "9

ActualProduct

52.0 0.700237

0

0

0

0

0

0

0

0

0

0

count

1000.0 6 1000.0 0 1000.0 15

587.0 1233

1000.0 4738

1000.0 26 1000.0 0 1000.0 0 1000.0 0 1000.0 35 1000.0 0 25%

3.000000 0.700000 3.940000

\

Trang 8

wip 783.0006000 1047.000000 1262.000000

23122.000000

25920 000000

138 000000

300.000000

45 000000

2.000000

89 000000

1.120437

= True)

3) Phân tích dữ liệu khám phá (EDA - Exploratory Data Analysis)

Trực quan hoá dữ liệu

# import thu vién ham

import matplotlib.pyplot as plt

import numpy as np

df2= df1.head(106)

X2=[df2.NumWorkers]

print (X2)

Y2=[df2.ActuaLProduct]

print(Y2)

[date

1/1/2015 30

1/1/2015 30

1/1/2015 56

[date

Trang 9

1/1/2015 0.800570

plt.plot(X2, Y2, color = '#E1006A', linestyle = ' ', label = "X value", marker = 'D', markersize = 8)

plt.title('Do thi bien dong’)

plt.xlabel ('NumWorkes' )

plt.ylabel(‘ActualProduct')

plt.show()

Do thi bien dong

1.0 +

Sd

«Ẳ

0.4 4

Sd

NumWorkes

Trang 10

5) Huấn luyện mơ hình (Train Model)

Hồi quy tuyến tính với thư viện scikit-learn

# import thư viện hàm cu `a mơ hình

# import module hàm thực hiện chia tách tập dữ Liệu thành 2 phâ`n

from sklearn.model_selection import train_test_split

# import module ham xay dung m6 hinh tuyé’n tinh

from sklearn.linear_model import LinearRegression

# import cdc module hàm tính các chi” sơ“ đánh giá cu ”a mơ hình R^2,

MAE, MSE, MAPE

from sklearn.metrics import r2_score, mean_absolute error,

mean_squared_ error, mean_absolute_ percentage error,

explained variance score

predic = ['NumWorkers','smv','incentive','over_time']

out = 'ActualProduct'

X = dfll[predic]

Y = đf1[out]

train X, test X, train Y, test Y = train test spLit(X, Y, test size =

model_Working = LinearRegression()

model_Working fit(train_X, train_Y)

LinearRegression()

yfit = model_Working.predict(train_X)

r2 = r2_score(train_Y, yfit)

print('Các giá trị hệ sơLhợ quy riéng phan cBa biéb X')

print('Hãng sơLcBEa mơ hình (Tntercept):', modeL_Working.intercept_)

Gia tri R*2 = 0.24713568010795395

Các giá trị hệ sơLhơi quy riêng phân cBa biêh X

Biêh X Hệ sơLhơi quy

3_ over time -8 080006

Hang séLc@a mơ hình (Intercept): 0.7946094017410698

Trang 11

Hồi quy tuyến tính với giải thuật giảm độ dốc

# import các thư viện hàm câ`n thiê “t

from skLearn.Linear _modeL import SGDRegressor

from sklearn.pipeline import make pipeLine

from sklearn.preprocessing import StandardScaler

from sklearn.metrics import r2_score, mean_absolute percentage error,

mean_Ssquared_ error, mean_absolute error

outcome= ‘'ActualProduct'

X

Y

# Tach tập dữ Liệu phân tích cu'a biê“n X, Y thành 2 phâ`n: 60% dữ

liệu train mô hình, 40% dữ Liệu test mô hình

train_X, valid_X, train_Y, valid_Y = train test spLit(X, Y, test size

dfl[predictors] # la’y dỡ Liệu cu 'a 4 biê“n độc lap gán vào X

df1[outcome] # lây dữ liệu cu ”a biê“n phụ thuộc gán vào Y

reg = make_pipeline(StandardScaler(), SGDRegressor(max_iter = 1000,

tol = 0.001))

reg.fit(train_X, train_Y)

regressor = reg.steps[1][1]

regressor.coef_})) # in hệ sô“ hô`i quy riêng phâ`n cu`a biê“n

print('Giá trị R^2 =',r2)

Hang séLc@a m6 hinh: [0.74841934]

Giá trị R^2 = 0.24495960513609816

Actual product=0.74629145 — 0.025920* NumW orkers — 0.048929*smv+0.104721*inc entive—0.0:

6) Đánh giá mô hình (Evaluating the model)

# Mô hình 1

# Tính các chi” sô“ đánh giá mô hình huâ n tuyện (với phâ`n dữ Liệu

train)

# Tính giá trị dự báo cu`a Y bằng mô hình với phâ`n dữ Liệu train X

yfit = model_Working.predict(train_X)

# Tính các chi” sô“ đánh giá

“AE = mean_absotute_error(train Y, yfit)

“SE = mean_squared_error(train_Y, yfit)

Trang 12

print('`AE =', `AE)

print('R`SE =', R`SE)

“AE = 15.935275064445507

“SE = 391.85901208711437

“APE = 23.405700258939728

R°SE = 19.795429070548444

C:\Users\Admin\anaconda3\lib\site-packages\sklearn\base py:493: FutureWarning: The feature names should match those that were passed

during fit Starting version 1.2, an error will be raised

Feature names must be in the same order as they were in fit

# M6 hinh 2

# Tính các chi” sô“ đánh giá mô hình huâ n tuyện (với phâ`n dữ Liệu test)

# Tính giá trị dự báo cu'`a Y bằng mô hình với phâ`n dữ Liệu test _X

yfit test = modeL Working.predict(test_X)

# Tính các chi” sô“ đánh giá

“AE = mean_absolute _error(test_Y, yfit_test)

“SE = mean_squared_error(test_Y, yfit_test)

APE = mean_absolute_percentage_error(test_Y, yfit_test)

R`SE = np.sqrt(`SE)

print('`SE =', `SE)

print('`APE =', `APE)

print('R`SE =', R`SE)

“AE = 0.11691611016458968

“SE = 0.02455837059308993

“APE = 0.21912857610667566

R°SE = 9.15671110551932793

Đánh giá các mô hình

Mô hình 1:

- _ MAE: là một phương pháp đo lường sự khác biệt (độ chênh lệch giá trị) giữa hai biến liên tục X và Y là hai biến liên tục thể hiện kết quả dự đoán của mô hình và kết quả thực tế độ chênh lệch càng thấp thì càng tốt nên mô hình 1

được xem là chưa tốt vì có giá trị chênh lệch trung bình tương đối cao

( 15.935275064445507)

—- MSE: la gid trị trung bình của bình phương sai số (hàm mất mát), là sự khác

biệt giữa các giá trị được mô hình dự đoán và giá trị thực nên mô hình 1

được xem là chưa tốt vì có giá trị trung bình của bình phương sai sỐ tương

Trang 13

- MAPE: là phân trăm sai số trung bình tuyệt đối, là thước đo thống kê mức

độ chính xác của hệ thống dự báo nên mô hình 1 được xem là chưa tốt vì có

phần trăm sai số trung bình tuyệt đối tương đối cao (23.40570025893973)

- RMSE: 1a can bac hai ca gid trị trung bình các của các sai số bình phương (MSE) Thông th ường, ta th ườn dMng chỉ số này để xác định giá trị chênh

lệch trung bình giữa giá dự đoán và giá trị test ban đầu nên mô hình 1 được

xem là chưa tốt vì có căn bậc hai của giá trị trung bình các của các sai số bình

phương tương đối cao (19.795429070548444)

Mô hình 2:

- MAE: mô hình 2 được xem là tốt vì có giá trị chênh lệch trung bình tương đối

thấp (0.11691611016458928)

- MSE: mô hình 2 được xem là tốt vì có giá trị trung bình của bình phương sai

số tương đối thấp (0.02455837059308984)

- MAPE: mô hình 2 được xem là tốt vì có phần trăm sai số trung bình tuyệt đối tương đối thấp (0.21912857610667494)

- RMSE: mô hình 2 được xem là tốt vì có giá trị trung bình các của các sai số bình phương tương đối thấp (0.15671110551932763)

So sánh các mô hình

MAE (1) > MAE (2) nên mô hình 2 tốt hơn (15.935275064445507 >

0.11691611016458925)

MSE (1) > MSE (2) nên mô hình 2 tốt hơn (391.8590120871145 >

0.02455837059308984)

MAPE (1) > MAPE (2) nên mô hình 2 tốt hơn (23.40570025893973 >

0.21912857610667494)

RMSE (1) > RMSE (2) nên mô hình 2 tốt hơn (19.795429070548444 >

0.15671110551932763)

R^2 (1) > R^2 (2) nên mô hình 1 tốt hơn (0.24713568010795384 >

0.24668072096321714) => Mô hình 2 tốt hơn mô hình 1

Phân tích các kết quả cAa mô hình

Mô hình 1:

- _ Giữ tất cả các tính năng khác không đổi, khi tăng 1 đơn vị trong cột

Numworkers thì Actual Product sẽ giảm 0.001060 (don vi)

- Gitr tat ca cdc tính năng khác không đổi, khi tăng 1 đơn vị trong cột smv thì

Actual Product sé giam 0.004910 (don vi)

- _ Giữ tất cả các tính năng khác không đổi, khi tăng 1 đơn vị trong c6t incentive

thi Actual Product sé tang 0.003369 (don vi)

- Gitr tat ca cdc tinh nang khac khong d6i, khi tang 1 đơn vị trong cột

over_time thi Actual Product sé giam 0.000006 (don vi)

Mô hình 2:

- _ Giữ tất cả các tính năng khác không đổi, khi tăng 1 đơn vị trong cột

Trang 14

- _ Giữ tất cả các tính năng khác không đổi, khi tăng 1 đơn vị trong cột smv thì

Actual Product sé giam 0.048929 (don vi)

- _ Giữ tất cả các tính năng khác không đổi, khi tăng 1 đơn vị trong c6t incentive

thi Actual Product sé tang 0.104721 (don vi)

- Gitr tat ca cdc tinh nang khac khong d6i, khi tang 1 don vi trong cét

over_time thi Actual Product sé giam 0.021362 (don vi)

7) T6i wu héa tham s6 mé hinh (Performing Hyper Parameter Tuning

on the model)

8) Diễn giải kết quả từ mô hình (Interpreting the model results)

Ngày đăng: 05/12/2024, 15:57

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w