3) Tiền Xử Lý Dữ Liệu.: Computerparts/Data?Select=Intel - Cpus.Csv

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 14

3) Tiền xử lý dữ liệu.

Tập dữ liệu này chứa thông số kỹ thuật chi tiết, ngày phát hành và giá
phát hành của các bộ phận máy tính. Tập dữ liệu chứa hai tệp CSV:
gpus.csv cho Bộ xử lý đồ họa (GPU) và cpus.csv cho Bộ xử lý trung tâm
(CPU). Các thuộc tính dữ liệu bao gồm tốc độ xung nhịp, nhiệt độ tối đa,
độ phân giải màn hình, mức tiêu thụ điện năng, số lượng luồng, ngày phát
hành, giá phát hành, kích thước khuôn, hỗ trợ ảo hóa và nhiều trường
tương tự khác. Dữ liệu được đưa ra ở đây chủ yếu thuộc về Intel, Game-
Debate và các công ty liên quan đến việc sản xuất bộ phận này. Dữ liệu
gốc được cung cấp tại: https://www.kaggle.com/datasets/iliassekkaf/
computerparts/data?select=Intel_CPUs.csv
Các biến chính trong bộ dữ liệu:
- Product collection: Tập hợp các sản phẩm cùng loại thuộc cùng một
dòng sản phẩm từ nhà sản xuất. Ví dụ, một dòng sản phẩm có thể bao
gồm các vi xử lý với cấu hình và hiệu năng khác nhau nhưng thuộc cùng
một họ vi xử lý.
- Vertical Segment: Phân khúc thị trường cụ thể mà sản phẩm được
thiết kế và định vị để phục vụ.
- Processor number (Số xử lý): Mã định danh cho mỗi loại vi xử lý,
giúp phân biệt chúng. Dùng để xác định thông tin về tính năng, hiệu năng
và thông số kỹ thuật của vi xử lý.
- Status: Trạng thái hiện tại của sản phẩm, bao gồm thông tin về việc
sản phẩm đã được ngừng sản xuất hay đang trong giai đoạn sản xuất và
phân phối.
- Launch date: Ngày ra mắt chính thức của sản phẩm.
- Lithography: Quá trình sản xuất vi mạch trên một mẫu silicon. Đây
là thông số quan trọng cho thấy kích thước và công nghệ sản xuất của vi
xử lý. Lithography thường được đo bằng đơn vị nanometer (nm), và giá
trị càng nhỏ thì công nghệ sản xuất càng tiên tiến.
- Recommended customer price: Giá bán đề xuất cho khách hàng.
Đây là giá tham khiêu được đề xuất mà nhà sản xuất khuyến nghị cho sản
phẩm.
- Number of Cores (số lõi): Số lõi xử lý độc lập có trong vi xử lý. Mỗi
lõi đều có thể thực hiện các tác vụ riêng biệt đồng thời, giúp tăng hiệu
năng xử lý đa nhiệm.
- Number of Threads (số luồng): Số luồng đồng thời mà vi xử lý có
thể thực hiện. Mỗi luồng đại diện cho một quá trình thực thi độc lập và có
thể chạy song song trên các lõi khác nhau để tận dụng tối đa hiệu năng xử
lý.
- Processor Base Frequency: Tần số xung nhịp cơ bản của vi xử lý,
tức là tần số hoạt động mặc định khi không có yêu cầu nặng nề hoặc chế
độ tăng tốc.
- Max turbo frequency: Tần số xung nhịp tối đa mà vi xử lý có thể đạt
được khi hoạt động ở chế độ tăng tốc tối đa.
- Cache: Bộ nhớ cache là một bộ nhớ tạm thời và nhanh hơn so với bộ
nhớ chính RAM. Nó lưu trữ dữ liệu và hướng dẫn mà vi xử lý sử dụng
thường xuyên để tăng tốc độ truy xuất và xử lý dữ liệu.
- Bus speed: Tốc độ truyền dữ liệu giữa các thành phần của hệ thống,
thường được đo bằng đơn vị megahertz (MHz) hoặc gigahertz (GHz).
- TDP (Thermal Design Power): TDP là công suất nhiệt mà hệ thống
cần để hoạt động ổn định khi sử dụng vi xử lý. Đây là thông số quan
trọng để người dùng và nhà sản xuất có thể đảm bảo hệ thống được làm
mát đúng cách và tránh quá nhiệt.
- Conflict free: Đây là một thông số liên quan đến nguồn gốc của các
nguyên liệu sử dụng trong quá trình sản xuất sản phẩm. Nếu sản phẩm
được xác định là "conflict free," điều đó có nghĩa là không có sự liên
quan đến việc tài trợ xung đột hoặc vi phạm nhân quyền trong quá trình
lấy nguyên liệu.
- Max Memory Size: Dung lượng tối đa của bộ nhớ RAM hệ thống
mà vi xử lý có thể hỗ trợ.
- Max Memory Bandwidth: Thông lượng tối đa mà vi xử lý có thể
truyền dữ liệu giữa bộ nhớ và các thành phần khác của hệ thống, thường
được đo bằng đơn vị gigabyte/giây (GB/s).
- Max number of PCI Express Lanes (số khe PCI Express tối đa): Số
khe mở rộng PCI Express mà vi xử lý hỗ trợ, cho phép gắn các thiết bị
như card đồ họa, card mạng,…
- Embedded option available: Thông số này chỉ ra rằng sản phẩm có
sẵn tùy chọn để tích hợp vào các thiết bị nhúng, như hệ thống điều khiển
tự động, thiết bị y tế, hay các thiết bị điện tử nhỏ gọn khác.
3.1 Đọc dữ liệu "Intel_CPUs.csv".
Dùng lệnh read.csv() để đọc tập dữ liệu.
Code:
# Đọc data từ Intel_CPUs.csv
data = read.csv("Intel_CPUs.csv")
# In ra 10 dòng đầu tiên để kiểm tra việc đọc dữ liệu đã thành công hay
chưa
head(data,10)
Kết quả:

3.2 Trích xuất các tiêu thức quan trọng của dữ liệu
Từ các tiêu chí có trong bảng, ta chọn ra 9 tiêu chí quan trọng của
CPU để xử lý: Vertical_Segment, Lithography, nb_of_Cores, nb_of_
Threads, Processor_Base_Frequency, TDP, Max_Memory_Size, Max
_Memory_Bandwidth, Max_nb_of_PCI_Express_Lanes.
Code:
# Chọn các biến cho data frame
df <- data[, c("Vertical_Segment", "Lithography", "nb_of_Cores",
"nb_of_Threads",
"Processor_Base_Frequency", "TDP","Max_Memory_Size",
"Max_Memory_Bandwidth",
"Max_nb_of_PCI_Express_Lanes")]
head(df, 10)
Kết quả:

Từ dữ liệu gốc bao gồm các biến chính mà đề bài đưa ra.
Kiểm tra và xóa dữ liệu đơn vị trong tập tin để có thể tiến hành tính
toán một các dễ dàng hơn.
Code:
### Loại bỏ đơn vị
# Loại bỏ đơn vị "nm" từ "Lithography"
df$Lithography <- as.numeric(sub(" nm", "",df$Lithography))
# Loại bỏ đơn vị "GB" từ "Max_Memory_Size"
df$Max_Memory_Size <- as.numeric(sub(" GB", "",df$Max_Memory_Size))
# Loại bỏ đơn vị "W" từ "TDP"
df$TDP <- as.numeric(sub(" W", "",df$TDP))
# Loại bỏ đơn vị "GB/s" từ "Max_Memory_Bandwidth"
df$Max_Memory_Bandwidth <- as.numeric(gsub("\\s*GB/s",
"",df$Max_Memory_Bandwidth))
# Hàm chuyển đổi đơn vị GHz sang MHz (nếu có), đồng thời loại bỏ đơn vị
"GHz" và "MHz"
convert_frequency <- function(frequency) {
if (grepl("GHz", frequency)) {
return(as.numeric(gsub(" GHz", "", frequency)) * 1000)
} else if (grepl("MHz", frequency)) {
return(as.numeric(gsub(" MHz", "", frequency)))
} else {
return(NA)
}
}
# Dùng hàm convert_frequency để loại bỏ đơn vị cho
"Processor_Base_Frequency"
df$Processor_Base_Frequency <- sapply(df$Processor_Base_Frequency,
convert_frequency)
# in kết quả sau khi xóa đơn vị
head(df,10)
- Kết quả:

3.3 Làm sạch dữ liệu (Data cleaning): NA (dữ liệu khuyết)


Kiểm tra các dữ liệu bị khuyết trong tập tin (các câu lệnh tham khảo:
is.na(), which(), apply()). Nếu có dữ liệu bị khuyết, hãy đề xuất phương
pháp thay thế cho những dữ liệu bị khuyết này.
Sử dụng kết hợp hai hàm apply() và is.na() để đếm số lượng dữ liệu bị
khuyết trên từng cột. Có các cách để thay thế biến dữ liệu điền khuyết
như:
1. Thay giá trị của nó bằng Means của cột đó.
2. Thay giá trị của nó bằng Median của cột đó.
3. Xóa bỏ giá trị N/A khỏi tập dữ liệu. ...
Code:
### Làm sạch dữ liệu
# Kiểm tra dữ liệu bị khuyết (NA) trong từng cột df
apply(is.na(df),2,sum)
# Kiểm tra vị trí chính xác của dữ liệu bị khuyết
apply(is.na(df),2,which)
# Tính tỉ lệ dữ liệu bị khuyết
apply(is.na(df),2,mean)
Kết quả:
- Thống kê số lượng dữ liệu bị khuyết (NA) trong từng cột df:
- Phần trăm dữ liệu khuyết:

Nhận xét:
- Từ dữ liệu này, có thể thấy rằng tỉ lệ bị khuyết của các biến
“Lithography”, “TDP”, là rất thấp, chỉ dưới 4%. Vì lượng dữ liệu khuyết
trong tệp tin thấp (dưới 10%) nên ta chọn phương pháp xoá các quan sát
mà biến nào chứa dữ liệu khuyết.
- Tuy nhiên, tỉ lệ bị khuyết của các biến “nb_of_Threads”, “Max
_Memory_Size”, “Max_Memory_Bandwidth”, “Max_nb_of_PCI_
Express _Lanes” là tương đối cao, trên 10% . Trong trường hợp này, có
thể thay thế các giá trị N/A của các biến này bằng giá trị trung bình hoặc
median. Tuy nhiên, nếu có nhiều giá trị ngoại lệ, thì nên sử dụng median
thay vì mean, vì median ít bị ảnh hưởng bởi các giá trị ngoại lệ.
Code:
# Xóa các dữ liệu bị khuyết có tỉ lệ bị khuyết <10%, ở đây là gồm
Lithography và TDP
df<-subset(df,!is.na(Lithography)& !is.na(TDP))
apply(is.na(df),2,sum)
# Thay median vào các dữ liệu có tỉ lệ bị khuyết >10%
# Tính med của Max_Memory_Size
medRev<-median(df$Max_Memory_Size, na.rm = TRUE)
# Thay thế dữ liệu bị khuyết bằng giá trị của median
df$Max_Memory_Size<-ifelse(is.na(df$Max_Memory_Size), medRev,
df$Max_Memory_Size)
# Tương tự cho Processor_Base_Frequency
medPr<-median(df$Processor_Base_Frequency , na.rm = TRUE)
df$Processor_Base_Frequency <-ifelse(is.na(df$Processor_Base_Frequency ),
medPr, df$Processor_Base_Frequency )
# Tương tự cho $nb_of_Threads
medThr<-median(df$nb_of_Threads, na.rm = TRUE)
df$nb_of_Threads<-ifelse(is.na(df$nb_of_Threads), medThr, df$nb_of_Threads)
# Tương tự cho Max_Memory_Bandwidth
medMxm<-median(df$Max_Memory_Bandwidth, na.rm = TRUE)
df$Max_Memory_Bandwidth<-ifelse(is.na(df$Max_Memory_Bandwidth), medMxm,
df$Max_Memory_Bandwidth)
# Tương tự cho Max_nb_of_PCI_Express_Lanes
medMxn<-median(df$Max_nb_of_PCI_Express_Lanes, na.rm = TRUE)
df$Max_nb_of_PCI_Express_Lanes<-
ifelse(is.na(df$Max_nb_of_PCI_Express_Lanes), medMxn,
df$Max_nb_of_PCI_Express_Lanes)
# kiểm tra còn sữ liệu khuyết không
apply(is.na(df),2,sum)
Kết quả:
4) Thống kê mô tả.
4.1 Tính toán các giá trị đặc trưng của Processor_Base_Frequency
Code:
# Tính toán các đặc trưng của Processor_Base_Frequency
# Trung bình
mean(df$Processor_Base_Frequency)
# Trung vị
median(df$Processor_Base_Frequency)
# Phương sai
var(df$Processor_Base_Frequency)
# Sai số chuẩn
sd(df$Processor_Base_Frequency)
Kết quả:

4.2 Tính toán các giá trị thống kê mô tả của tổng tất cả tệp dữ liệu
từng tệp dữ liệu
Code:
summary(df)
by(df, df$Vertical_Segment, summary)
Kết quả:
- Tổng:
- Desktop:

- Embedded:

- Mobile:
- Server:

4.3 Biểu đồ phân bố Processor_Base_Frequency với 4 loại cpu


Code:
# Ggplot biểu đồ phân bố Processor_Base_Frequency với 4 loại cpu
ggplot(df, aes(x=Vertical_Segment, y=Processor_Base_Frequency))+geom_boxplot()+
stat_summary(fun.y = "mean",geom = "point", color="red")+ theme_minimal()
Kết quả:

Nhận xét:
- Desktop: Trong số 593 sản phẩm được khảo sát ta thấy desktop có:
Tần số xung nhịp cơ bản trung bình là 2681 MHz.
Tần số xung nhịp cơ bản thường phân bố trong khoảng từ 2400
MHz tới 3200 MHz.
Tần số xung nhịp cơ bản tối đa là 4300 MHz và tối thiểu là 300
MHz.
- Embedded: Trong số 168 sản phẩm được khảo sát ta thấy embedded
có:
Tần số xung nhịp cơ bản trung bình là 1897 MHz.
Tần số xung nhịp cơ bản thường phân bố trong khoảng từ 1600
MHz tới 2300 MHz.
Tần số xung nhịp cơ bản tối đa là 3000 MHz và tối thiểu là 400
MHz.
- Mobile: Trong số 690 sản phẩm được khảo sát ta thấy mobile có:
Tần số xung nhịp cơ bản trung bình là 1904 MHz.
Tần số xung nhịp cơ bản thường phân bố trong khoảng từ 1500
MHz tới 2400 MHz.
Tần số xung nhịp cơ bản tối đa là 3500 MHz và tối thiểu là 400
MHz.
- Server: Trong số 709 sản phẩm được khảo sát ta thấy desktop có:
Tần số xung nhịp cơ bản trung bình là 2420 MHz.
Tần số xung nhịp cơ bản thường phân bố trong khoảng từ 2000
MHz tới 3000 MHz.
Tần số xung nhịp cơ bản tối đa là 4100 MHz và tối thiểu là 500
MHz.
4.4 Biểu đồ phân bố của Processor_Base_Frequency
Code:
hist(df$Processor_Base_Frequency, main = "Histogram of Processor Base Frequency",
xlab = "Processor Base Frequency (MHz)", col = "blue", border = "black")
Kết quả:

Nhận xét:
Số lượng vi xử lý được phân bố không đều trong biểu đồ. Dữ liệu Tần
số xung nhịp cơ bản của vi xử lý phân bố từ khoảng 0 MHz đến 4000
MHz. Số lượng vi xử lý tăng dần trong khoảng có tần số xung nhịp cơ
bản từ 0 đến khoảng 2500 MHz và trở nên giảm dần trong khoảng từ
2500 MHz trở lên.
Số lượng vi xử lý cao nhất tại khoảng có tần số xung nhịp cơ bản từ
1500 MHz tới 3000 MHz, với một phần lớn các vi xử lý có tần số xung
nhịp cơ bản tập trung quanh giá trị này. Điều này có thể cho thấy rằng
nhiều vi xử lý được thiết kế với tần số cơ bản tương đối cao.
4.5 Biểu đồ phân tán thể hiện sự phụ thuộc của lần lượt là các biến
với Processor_Base_Frequency
Code:
ggplot(data=df, mapping = aes(x = Lithography , y =Processor_Base_Frequency,
col=Vertical_Segment)) +
geom_point()
ggplot(data=df, mapping = aes(x = nb_of_Cores , y =Processor_Base_Frequency,
col=Vertical_Segment)) +
geom_point()
ggplot(data=df, mapping = aes(x = nb_of_Threads , y =Processor_Base_Frequency,
col=Vertical_Segment)) +
geom_point()
ggplot(data=df, mapping = aes(x = TDP , y =Processor_Base_Frequency, col=Vertical_Segment)) +
geom_point()
ggplot(data=df, mapping = aes(x = Max_Memory_Size , y =Processor_Base_Frequency,
col=Vertical_Segment)) +
geom_point()
ggplot(data=df, mapping = aes(x = Max_Memory_Bandwidth , y =Processor_Base_Frequency,
col=Vertical_Segment)) +
geom_point()
ggplot(data=df, mapping = aes(x =Max_nb_of_PCI_Express_Lanes , y =Processor_Base_Frequency,
col=Vertical_Segment)) +
geom_point()
Kết quả:
- Lithography: Sự phân phối của Processor Base Frequency có thể
cho thấy mối liên quan giữa tần số xung nhịp cơ bản và công nghệ
lithography được sử dụng. Công nghệ lithography cao có thể cho phép
tạo ra vi xử lý với tần số cơ bản cao hơn.
- Nb_of_core: Sự phân phối của Processor Base Frequency có thể cho
thấy mối liên quan giữa tần số cơ bản và số lượng cores (nhân) của vi xử
lý. Có thể có một sự tăng tần số cơ bản khi số lượng cores tăng, để đảm
bảo hiệu năng cao hơn trong việc xử lý đa nhiệm.

- Nb_of_threat: Sự phân phối của Processor Base Frequency có thể


cho thấy mối liên quan giữa tần số cơ bản và số lượng threads (luồng) của
vi xử lý. Nếu vi xử lý hỗ trợ công nghệ đa luồng, có thể có một sự tăng
tần số cơ bản để đáp ứng yêu cầu xử lý đa nhiệm.
- TDP: Sự phân phối của Processor Base Frequency có thể liên quan
đến TDP của vi xử lý. TDP đo lường lượng nhiệt được tạo ra khi vi xử lý
hoạt động. Vi xử lý với tần số cơ bản cao hơn có thể có TDP cao hơn, vì
nó tiêu tốn nhiều năng lượng hơn để hoạt động.

- Max_Memory_Size: Sự phân phối của Processor Base


Frequency liên quan đến khả năng hỗ trợ dung lượng bộ nhớ lớn hơn.
Vi xử lý với tần số cơ bản cao hơn thường có khả năng xử lý và lưu
trữ nhiều dữ liệu hơn, đáp ứng nhu cầu xử lý dữ liệu phức tạp và ứng
dụng đòi hỏi nhiều bộ nhớ.
- Max_Memry Bandwidth: Sự phân phối của Processor Base
Frequency liên quan đến băng thông bộ nhớ tối đa. Tần số cơ bản cao hơn
có thể ảnh hưởng đến khả năng truyền dữ liệu giữa bộ nhớ và vi xử lý.
Nếu vi xử lý hoạt động ở tần số cao hơn, nó có thể hỗ trợ băng thông bộ
nhớ cao hơn, cho phép truyền dữ liệu nhanh chóng và hiệu quả hơn giữa
bộ nhớ và các phần khác của hệ thống.

- Max_nb_of_PCI_Express_Lanes: Sự phân phối của Processor Base


Frequency có thể liên quan đến số lượng PCI Express Lanes tối đa được
hỗ trợ bởi vi xử lý. Vi xử lý với tần số cơ bản cao hơn có thể hỗ trợ số
lượng PCI Express Lanes lớn hơn để hỗ trợ việc kết nối các thiết bị ngoại
vi và truyền dữ liệu nhanh chóng.

You might also like