if ("reticulate" %in% installed.packages()) {
  print("reticulate đã được cài đặt.")
} else {
  print("reticulate chưa được cài đặt. Hãy chạy install.packages('reticulate') để cài đặt.")
}
## [1] "reticulate đã được cài đặt."
library(reticulate)
py_module_available("pandas")
## [1] TRUE
py_module_available("matplotlib")
## [1] TRUE
py_module_available("sklearn")
## [1] TRUE
library(reticulate)
py_install(c("pandas", "matplotlib", "scikit-learn"))
## Using virtual environment "C:/Users/84947/Documents/.virtualenvs/r-reticulate" ...
## + "C:/Users/84947/Documents/.virtualenvs/r-reticulate/Scripts/python.exe" -m pip install --upgrade --no-user pandas matplotlib scikit-learn

Bài 1

set.seed(42)

# Sinh ngẫu nhiên 500 giá trị từ phân phối chuẩn N(50, 225)
data <- rnorm(500, mean = 50, sd = sqrt(225))

# Thực hiện kiểm định Shapiro-Wilk
shapiro_test <- shapiro.test(data)

# In kết quả
print(shapiro_test)
## 
##  Shapiro-Wilk normality test
## 
## data:  data
## W = 0.99852, p-value = 0.9533

Bài 2

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris

# Đọc dữ liệu Iris
iris = load_iris()
df = pd.DataFrame(data=iris.data, columns=iris.feature_names)

# In 5 dòng đầu của DataFrame
variances = df.var()
print('Phương sai của từng đặc trưng:')
## Phương sai của từng đặc trưng:
print(variances)
## sepal length (cm)    0.685694
## sepal width (cm)     0.189979
## petal length (cm)    3.116278
## petal width (cm)     0.581006
## dtype: float64
# Vẽ biểu đồ scatter giữa Sepal Length và Sepal Width
plt.figure(figsize=(8, 6))
plt.scatter(df['sepal length (cm)'], df['sepal width (cm)'], color='blue', alpha=0.5, edgecolors='black')
plt.xlabel('Sepal Length (cm)')
plt.ylabel('Sepal Width (cm)')
plt.title('Scatter Plot of Sepal Length vs Sepal Width')
plt.grid(True)
plt.show()