Logo Zephyrnet

Dự án Dự đoán Chiến thắng của Nhóm IPL bằng Máy học

Ngày:

Bài báo này đã được xuất bản như một phần của Blogathon Khoa học Dữ liệu.

I

Machine Learning và Khoa học dữ liệu là một trong những lĩnh vực công nghệ phát triển nhanh nhất. Lĩnh vực này dẫn đến những thay đổi đáng kinh ngạc trong lĩnh vực y tế, sản xuất, người máy, v.v. Lý do chính cho sự tiến bộ trong lĩnh vực này là sự gia tăng sức mạnh tính toán và tính sẵn có của lượng lớn dữ liệu. Trong Khoa học dữ liệu, dữ liệu này được phân tích và làm cho phù hợp để tạo ra các mô hình và sản phẩm máy học.

Trong bài viết hôm nay, chúng ta sẽ thảo luận về dự đoán chiến thắng của đội IPL. Dựa trên một số thống kê trận đấu, chúng tôi dự đoán ai là người chiến thắng trong trận đấu IPL. Thông qua dự án này, bạn sẽ làm quen với phân tích dữ liệu khám phá và các kỹ thuật kỹ thuật tính năng cần được áp dụng để xử lý dữ liệu.

Vì vậy, hãy đi đến tập dữ liệu.

Bộ dữ liệu

Tập dữ liệu chúng tôi đang sử dụng ở đây là bộ dữ liệu IPL, trong đó có các chi tiết liên quan đến người chiến thắng và số liệu thống kê trận đấu. Nó chứa các thông tin chi tiết như các đội đã chơi, người chiến thắng, địa điểm của trận đấu, thắng bao nhiêu lần đánh bóng và chạy, tung quyết định, có áp dụng DLS hay không, tên của các trọng tài, v.v. Việc thực hiện phân tích dữ liệu khám phá và kỹ thuật dữ liệu trên dữ liệu này rất phức tạp quan trọng.

Thực hiện

Vì vậy, hãy bắt đầu triển khai mô hình dự đoán chiến thắng của nhóm IPL.

Như thường lệ, bước đầu tiên là nhập tất cả các thư viện cần thiết.

nhập gấu trúc dưới dạng pd nhập numpy dưới dạng np nhập seaborn dưới dạng sns sns.set_style("whitegrid") nhập matplotlib.pyplot dưới dạng plt nhập sklearn

Vì vậy, hãy nhập tập dữ liệu. Chúng tôi đã thảo luận về bộ dữ liệu.

dữ liệu = pd.read_csv("matches.csv")

Phân tích 5 hàng đầu tiên của tập dữ liệu

data.head ()
Dự đoán dự án sử dụng ML

Hãy xem một bản tóm tắt ngắn gọn về bộ dữ liệu IPL.

data.describe ()
Dự đoán dự án sử dụng ML

Kiểm tra xem có bất kỳ giá trị null nào có trong tập dữ liệu hay không.

data.isnull (). sum ()
id 0 Phần 0 thành phố 7 ngày 0 đội1 0 đội2 0 toss_winner 0 toss_decision 0 kết quả 0 dl_applied 0 người chiến thắng 4 win_by_runs 0 win_by_wickets 0 player_of_match 4 địa điểm 0 trọng tài1 2 trọng tài2 2 trọng tài3 637

Như bạn có thể thấy, các giá trị của umpire3 là null trong hầu hết các hàng, vì vậy chúng tôi sẽ loại bỏ cột umpire3. Và cũng đã loại bỏ một số hàng chứa giá trị null sau khi xóa cột umpire3.

dữ liệu = data.iloc[:,:-1] data.dropna(inplace=True)

Bây giờ, hãy xem tổng số đội được liệt kê trong tập dữ liệu này.

dữ liệu["team1"].unique()

Đầu ra

mảng (['Sunrisers Hyderabad', 'Mumbai Indians', 'Gujarat Lions', 'Rising Pune Supergiant', 'Royal Challengers Bangalore', 'Kolkata Knight Riders', 'Delhi Capitals', 'Kings XI Punjab', 'Chennai Super Kings', 'Rajasthan Royals', 'Kochi Tuskers Kerala', 'Pune Warriors', 'Rising Pune Supergiants'], dtype=object)

Ở đây bạn có thể thấy tên Delhi Daredevils và Delhi Capitals; Delhi Daredevils là tên cũ của Thủ đô Delhi. Tương tự, Decan Chargers là tên cũ của Sunrisers Hyderabad. Vì vậy, chúng tôi đang thay đổi tên cũ thành tên mới hơn.

#for Delhi Capitals data['team1']=data['team1'].str.replace('Delhi Daredevils','Delhi Capitals') data['team2']=data['team2'].str.replace( 'Delhi Daredevils','Delhi Capitals') data['winner']=data['winner'].str.replace('Delhi Daredevils','Delhi Capitals') #for Sunrisers Hyderabad data['team1']=data ['team1'].str.replace('Deccan Chargers','Sunrisers Hyderabad') data['team2']=data['team2'].str.replace('Deccan Chargers','Sunrisers Hyderabad') data[ 'winner']=data['winner'].str.replace('Deccan Chargers','Sunrisers Hyderabad')

Hình dung

Số trận đấu IPL thắng của mỗi đội.

plt.figure(figsize = (10,6)) sns.countplot(y = 'winner',data = data,order= data['winner'].value_counts().index) plt.xlabel('Wins') plt .ylabel('Team') plt.title('Số trận IPL mà mỗi đội thắng')
Hình dung

Tổng số trận đấu diễn ra ở một sân vận động khác

plt.figure(figsize = (10,6)) sns.countplot(y = 'venue',data = data,order = data['venue'].value_counts().iloc[:10].index) plt.xlabel ('Số trận đấu',fontsize=12) plt.ylabel('Địa điểm',fontsize=12) plt.title('Tổng số trận đấu diễn ra ở các sân vận động khác nhau')
Dự đoán dự án sử dụng ML

Quyết định được đưa ra bởi đội thắng cuộc.

plt.figure(figsize = (10,6)) sns.countplot(x = "toss_decision", data=data) plt.xlabel('Tung quyết định',fontsize=12) plt.ylabel('Count',fontsize=12 ) plt.title('Quăng quyết định')
Thanh biểu đồ

Bây giờ, hãy kiểm tra các giá trị duy nhất được trình bày trong mỗi tính năng.

x = ["city", "toss_decision", "result", "dl_applied"] for i in x: print("------------") print(data[i].unique( )) in(data[i].value_counts())

Đầu ra

------------ ['Hyderabad' 'Pune' 'Rajkot' 'Indore' 'Mumbai' 'Kolkata' 'Bangalore' 'Delhi' 'Chandigarh' 'Kanpur' 'Jaipur' 'Chennai'' Cape Town' 'Port Elizabeth' 'Durban' 'Centurion' 'East London' 'Johannesburg' 'Kimberley' 'Bloemfontein' 'Ahmedabad' 'Cuttack' 'Nagpur' 'Dharamsala' 'Kochi' 'Visakhapatnam' 'Raipur' 'Ranchi' 'Abu Dhabi' 'Sharjah' 'Mohali' 'Bengaluru'] Mumbai 101 Kolkata 77 Delhi 73 Hyderabad 64 Bangalore 63 Chennai 57 Jaipur 47 Chandigarh 46 Pune 38 Durban 15 Bengaluru 13 Centurion 12 Ahmedabad 12 Visakhapatnam 12 Rajkot 10 Mohali 10 Indore 9 Dharamsala 9 Johannesburg 8 Cuttack 7 Ranchi 7 Cảng Elizabeth 7 Cape Town 7 Abu Dhabi 7 Sharjah 6 Raipur 6 Kochi 5 Kanpur 4 Nagpur 3 Kimberley 3 Đông London 3 Bloemfontein 2 Tên: thành phố, dtype: int64 ----------- - ['field' 'bat'] trường 455 bat 288 Tên: toss_decision, dtype: int64 ------------ ['normal' 'tie'] normal 734 tie 9 Tên: kết quả, dtype: int64 ------------ [0 1] 0 724 1 19 Tên: dl_applied, dtype: int64

Chúng tôi không cần tất cả các tính năng hoặc cột để tạo mô hình. Nó sẽ làm giảm độ chính xác của mô hình, vì vậy chúng tôi sẽ loại bỏ một số tính năng không ảnh hưởng đến kết quả của chúng tôi.

data.drop(["id", "Season","city","date", "player_of_match", 'umpire1', "venue", "umpire2"], axis=1, inplace=True)

Dữ liệu của chúng tôi trông như thế này.

Dữ liệu IPL

Chúng tôi có thể chuyển đổi dữ liệu của mình thành phụ thuộc và độc lập.

X = data.drop(["winner"], axis=1) y = data["winner"]

Một số giá trị phân loại có trong dữ liệu đầu vào, vì vậy chúng tôi đang chuyển đổi chúng thành các giá trị số bằng cách sử dụng phương thức pandas, get_dummies.

X = pd.get_dummies(X, ["team1","team2", "toss_winner", "toss_decision", "result"], drop_first = True)

Dữ liệu đầu ra cũng là một giá trị phân loại, vì vậy chúng tôi đang chuyển đổi nó thành số bằng cách sử dụng LabelEncoder của sklearn.

từ sklearn.preprocessing import LabelEncoder le = LabelEncoder () y = le.fit_transform (y)

Bây giờ, hãy chuyển đổi dữ liệu của chúng ta thành tập huấn luyện để tạo mô hình và tập kiểm tra để đánh giá mô hình đã tạo.

từ sklearn.model_selection nhập train_test_split x_train, x_test, y_train, y_test = train_test_split(X, y, train_size = 0.8)

Tạo và đánh giá mô hình

Bước tiếp theo và quan trọng nhất trong bước tạo mô hình. Vì vậy, chúng tôi đang sử dụng Phân loại rừng ngẫu nhiên, Hồi quy logistic và Phân loại cây quyết định cho việc này.

từ sklearn.ensemble nhập RandomForestClassifier
model = RandomForestClassifier(n_estimators=200,min_samples_split=3, max_features = "auto")

Đào tạo mô hình phân loại rừng ngẫu nhiên

model.fit (x_train, y_train)

Dự đoán mô hình với các giá trị x_test và lưu nó dưới dạng y_pred

y_pred = model.predict(x_test)

Sử dụng điểm chính xác của sklearn, chúng tôi đang đánh giá kết quả dự đoán và độ chính xác của mô hình

từ sklearn.metrics nhập precision_score ac = precision_score(y_pred, y_test)
#đầu ra - 0.92

Độ chính xác của bộ kiểm tra là khoảng 92% là tốt. Đó là tất cả về dự đoán và đánh giá

Kết luận

  • I
  • Trực quan hóa dữ liệu: Hoàn thành biểu diễn đồ họa của tập dữ liệu để hiểu về các đội, trận đấu và quyết định ném của các trận đấu IPL
  • Các kỹ thuật tiền xử lý đã thực hiện trên Dữ liệu IPL: Đã thực hiện một số kỹ thuật kỹ thuật tính năng để làm cho tập dữ liệu phù hợp để tạo mô hình. Mã hóa để chuyển đổi các tính năng phân loại thành các tính năng số và kỹ thuật để tránh các giá trị null được sử dụng.
  • Tạo và đánh giá mô hình: Đây là phần chính của dự án và chúng tôi đã sử dụng mô hình RandomForestClassifier. Sau đó, chúng tôi đã thử nghiệm mô hình này với bộ thử nghiệm để đánh giá.

Tôi hy vọng rằng bạn có ý tưởng về các bước nêu trên. Hãy chắc chắn rằng bạn đang thực hành và cố gắng nắm bắt từng bước. Tôi hy vọng bạn thích bài viết của tôi.

Kết nối với tôi trên LinkedIn.

Phương tiện hiển thị trong bài viết này không thuộc sở hữu của Analytics Vidhya và được sử dụng theo quyết định riêng của Tác giả.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img

Trò chuyện trực tiếp với chúng tôi (chat)

Chào bạn! Làm thế nào để tôi giúp bạn?