Nó đã xảy ra một vài năm trước. Sau hơn 5 năm làm việc tại SAS, tôi quyết định bước ra khỏi vùng an toàn của mình. Là một nhà khoa học dữ liệu, việc tìm kiếm các công cụ hữu ích khác của tôi đã BẬT. May mắn thay, tôi không mất nhiều thời gian để quyết định – Python là món khai vị của tôi
Tôi luôn có thiên hướng viết mã. Đây là thời gian để làm những gì tôi thực sự yêu thích. Mã số. Hóa ra, mã hóa thực sự khá dễ dàng
Tôi đã học những kiến thức cơ bản về Python trong vòng một tuần. Và, kể từ đó, tôi không chỉ khám phá ngôn ngữ này một cách chuyên sâu mà còn giúp nhiều người khác học ngôn ngữ này. Python ban đầu là một ngôn ngữ có mục đích chung. Tuy nhiên, qua nhiều năm, với sự hỗ trợ mạnh mẽ của cộng đồng, ngôn ngữ này đã có thư viện chuyên dụng để phân tích dữ liệu và lập mô hình dự đoán
Do thiếu tài nguyên về python cho khoa học dữ liệu, tôi quyết định tạo hướng dẫn này để giúp nhiều người khác học python nhanh hơn. Trong hướng dẫn này, chúng tôi sẽ lấy thông tin có kích thước vừa phải về cách sử dụng Python để Phân tích dữ liệu, nhai nó cho đến khi chúng tôi cảm thấy thoải mái và thực hành nó theo ý mình
Hướng dẫn hoàn chỉnh về python từ đầu trong khoa học dữ liệu
Bạn có phải là người mới bắt đầu tìm kiếm một nơi để bắt đầu hành trình của mình trong khoa học dữ liệu và học máy không?
Bạn cũng có thể xem khóa học 'Giới thiệu về Khoa học dữ liệu' - phần giới thiệu toàn diện về thế giới khoa học dữ liệu. Nó bao gồm các mô-đun về Python, Thống kê và Mô hình dự đoán cùng với nhiều dự án thực tế để bạn bắt tay vào làm
Mục lục
- Khái niệm cơ bản về Python để phân tích dữ liệu
- Tại sao học Python để phân tích dữ liệu?
- Trăn 2. 7 v/s 3. 4
- Làm cách nào để cài đặt Python?
- Chạy một vài chương trình đơn giản bằng Python
- Thư viện Python và cấu trúc dữ liệu
- Cấu trúc dữ liệu Python
- Phép lặp Python và cấu trúc có điều kiện
- Thư viện Python
- Phân tích thăm dò trong Python bằng Pandas
- Giới thiệu về chuỗi và khung dữ liệu
- Bộ dữ liệu Vidhya Analytics- Vấn đề dự đoán khoản vay
- Thu thập dữ liệu trong Python bằng Pandas
- Xây dựng một mô hình dự đoán trong Python
- Hồi quy logistic
- cây quyết định
- rừng ngẫu nhiên
Bắt đầu nào
1. Khái niệm cơ bản về Python để phân tích dữ liệu
Tại sao học Python để phân tích dữ liệu?
Python đã thu hút rất nhiều sự quan tâm gần đây như là một lựa chọn ngôn ngữ để phân tích dữ liệu. Tôi đã có kiến thức cơ bản về Python một thời gian trước. Dưới đây là một số lý do có lợi cho việc học Python
- Mã nguồn mở – cài đặt miễn phí
- Cộng đồng trực tuyến tuyệt vời
- Rất dễ học
- Có thể trở thành ngôn ngữ chung cho khoa học dữ liệu và sản xuất các sản phẩm phân tích dựa trên web
Không cần phải nói, nó vẫn còn một vài nhược điểm
- Nó là một ngôn ngữ được giải thích chứ không phải là ngôn ngữ được biên dịch – do đó có thể chiếm nhiều thời gian của CPU hơn. Tuy nhiên, do tiết kiệm thời gian của lập trình viên [do dễ học], nó vẫn có thể là một lựa chọn tốt
Trăn 2. 7 v/s 3. 4
Đây là một trong những chủ đề được tranh luận nhiều nhất trong Python. Bạn sẽ luôn đi qua những con đường với nó, đặc biệt nếu bạn là người mới bắt đầu. Không có lựa chọn đúng/sai ở đây. Nó hoàn toàn phụ thuộc vào tình hình và nhu cầu sử dụng của bạn. Tôi sẽ cố gắng cung cấp cho bạn một số gợi ý để giúp bạn đưa ra lựa chọn sáng suốt
Tại sao Python 2. 7?
- Hỗ trợ cộng đồng tuyệt vời. Đây là thứ bạn cần trong những ngày đầu tiên. Python 2 được phát hành vào cuối năm 2000 và đã được sử dụng hơn 15 năm
- Rất nhiều thư viện của bên thứ ba. Mặc dù nhiều thư viện đã cung cấp 3. x nhưng vẫn còn một số lượng lớn các mô-đun chỉ hoạt động trên 2. phiên bản x. Nếu bạn dự định sử dụng Python cho các ứng dụng cụ thể như phát triển web với sự phụ thuộc cao vào các mô-đun bên ngoài, bạn có thể nên sử dụng 2. 7
- Một số tính năng của 3. x có khả năng tương thích ngược và có thể hoạt động với 2. 7 phiên bản
Tại sao Python 3. 4?
- Sạch hơn và nhanh hơn. Các nhà phát triển Python đã sửa một số trục trặc cố hữu và nhược điểm nhỏ để thiết lập nền tảng vững chắc hơn cho tương lai. Những điều này ban đầu có thể không liên quan lắm, nhưng cuối cùng sẽ quan trọng
- Nó là tương lai. 2. 7 là bản phát hành cuối cùng cho 2. x và cuối cùng mọi người phải chuyển sang 3. phiên bản x. Python 3 đã phát hành các phiên bản ổn định trong 5 năm qua và sẽ tiếp tục như vậy
Không có người chiến thắng rõ ràng nhưng tôi cho rằng điểm mấu chốt là bạn nên tập trung vào việc học Python như một ngôn ngữ. Chuyển đổi giữa các phiên bản chỉ là vấn đề thời gian. Hãy theo dõi một bài viết chuyên dụng về Python 2. x so với 3. x trong thời gian tới
Làm cách nào để cài đặt Python?
Có 2 cách tiếp cận để cài đặt Python
- Bạn có thể tải xuống Python trực tiếp từ trang dự án của nó và cài đặt các thành phần và thư viện riêng lẻ mà bạn muốn
- Ngoài ra, bạn có thể tải xuống và cài đặt một gói đi kèm với các thư viện được cài đặt sẵn. Tôi khuyên bạn nên tải xuống Anaconda. Một tùy chọn khác có thể là Enthought Canopy Express
Phương pháp thứ hai cung cấp cài đặt không rắc rối và do đó tôi sẽ giới thiệu phương pháp đó cho người mới bắt đầu. Sự bắt chước của phương pháp này là bạn phải đợi toàn bộ gói được nâng cấp, ngay cả khi bạn quan tâm đến phiên bản mới nhất của một thư viện. Nó không thành vấn đề cho đến khi và trừ khi, cho đến khi và trừ khi, bạn đang thực hiện nghiên cứu thống kê tiên tiến
Lựa chọn môi trường phát triển
Khi bạn đã cài đặt Python, có nhiều tùy chọn khác nhau để chọn môi trường. Dưới đây là 3 tùy chọn phổ biến nhất
- Dựa trên thiết bị đầu cuối / Shell
- IDLE [môi trường mặc định]
- iPython notebook – tương tự như markdown trong R
Mặc dù môi trường phù hợp tùy thuộc vào nhu cầu của bạn, nhưng cá nhân tôi thích iPython Notebooks hơn rất nhiều. Nó cung cấp rất nhiều tính năng tốt để ghi lại tài liệu trong khi tự viết mã và bạn có thể chọn chạy mã theo khối [thay vì thực thi từng dòng một]
Chúng tôi sẽ sử dụng môi trường iPython cho hướng dẫn đầy đủ này
Làm nóng lên. Chạy chương trình Python đầu tiên của bạn
Bạn có thể sử dụng Python như một máy tính đơn giản để bắt đầu
Vài điều cần lưu ý
- Bạn có thể khởi động sổ ghi chép iPython bằng cách viết “ipython notebook” trên thiết bị đầu cuối / cmd của mình, tùy thuộc vào HĐH bạn đang làm việc
- Bạn có thể đặt tên cho sổ ghi chép iPython bằng cách chỉ cần nhấp vào tên – UntitledO trong ảnh chụp màn hình ở trên
- Giao diện hiển thị In [*] cho đầu vào và Out[*] cho đầu ra
- Bạn có thể thực thi mã bằng cách nhấn “Shift + Enter” hoặc “ALT + Enter”, nếu bạn muốn chèn thêm một hàng sau
Trước khi đi sâu vào giải quyết vấn đề, hãy lùi lại một bước và hiểu những điều cơ bản về Python. Như chúng ta biết rằng cấu trúc dữ liệu, phép lặp và cấu trúc có điều kiện tạo thành mấu chốt của bất kỳ ngôn ngữ nào. Trong Python, chúng bao gồm danh sách, chuỗi, bộ dữ liệu, từ điển, vòng lặp for, vòng lặp while, if-else, v.v. Chúng ta hãy xem xét một số trong số này
2. Thư viện Python và Cấu trúc dữ liệu
Cấu trúc dữ liệu Python
Sau đây là một số cấu trúc dữ liệu, được sử dụng trong Python. Bạn nên làm quen với chúng để sử dụng chúng cho phù hợp
- Danh sách – Danh sách là một trong những cấu trúc dữ liệu linh hoạt nhất trong Python. Một danh sách có thể được xác định đơn giản bằng cách viết một danh sách các giá trị được phân tách bằng dấu phẩy trong dấu ngoặc vuông. Danh sách có thể chứa các mục thuộc các loại khác nhau, nhưng thông thường tất cả các mục đều có cùng loại. Danh sách Python có thể thay đổi và các phần tử riêng lẻ của danh sách có thể được thay đổi
Đây là một ví dụ nhanh để xác định một danh sách và sau đó truy cập nó
- Chuỗi – Chuỗi có thể được xác định đơn giản bằng cách sử dụng dấu phẩy đơn [ ‘ ], kép [ ” ] hoặc ba [ ”’ ]. Các chuỗi được đặt trong dấu ngoặc kép [ ”’ ] có thể trải rộng trên nhiều dòng và được sử dụng thường xuyên trong các tài liệu [cách Python ghi lại các chức năng]. \ được sử dụng làm ký tự thoát. Xin lưu ý rằng các chuỗi Python là bất biến, vì vậy bạn không thể thay đổi một phần của chuỗi
- Bộ dữ liệu – Một bộ dữ liệu được biểu thị bằng một số giá trị được phân tách bằng dấu phẩy. Các bộ dữ liệu là bất biến và đầu ra được bao quanh bởi các dấu ngoặc đơn để các bộ dữ liệu lồng nhau được xử lý chính xác. Ngoài ra, mặc dù các bộ dữ liệu là bất biến, nhưng chúng có thể chứa dữ liệu có thể thay đổi nếu cần
Vì Tuples là bất biến và không thể thay đổi, nên chúng xử lý nhanh hơn so với danh sách. Do đó, nếu danh sách của bạn không có khả năng thay đổi, bạn nên sử dụng bộ dữ liệu, thay vì danh sách
- Từ điển – Từ điển là một bộ khóa không có thứ tự. cặp giá trị, với yêu cầu các khóa là duy nhất [trong một từ điển]. Một cặp dấu ngoặc nhọn tạo ra một từ điển rỗng. {}.
Phép lặp Python và cấu trúc có điều kiện
Giống như hầu hết các ngôn ngữ, Python cũng có vòng lặp FOR, đây là phương pháp lặp được sử dụng rộng rãi nhất. Nó có một cú pháp đơn giản
for i in [Python Iterable]: expression[i]
Ở đây “Python Iterable” có thể là một danh sách, bộ dữ liệu hoặc các cấu trúc dữ liệu nâng cao khác mà chúng ta sẽ khám phá trong các phần sau. Hãy cùng xem một ví dụ đơn giản, xác định giai thừa của một số
fact=1 for i in range[1,N+1]: fact *= i
Đến với các câu lệnh có điều kiện, chúng được sử dụng để thực thi các đoạn mã dựa trên một điều kiện. Cấu trúc được sử dụng phổ biến nhất là if-else, với cú pháp sau
if [condition]: __execution if true__ else: __execution if false__
Chẳng hạn, nếu chúng ta muốn in số N là chẵn hay lẻ
if N%2 == 0: print ['Even'] else: print ['Odd']
Bây giờ bạn đã quen thuộc với các nguyên tắc cơ bản của Python, hãy tiến thêm một bước nữa. Điều gì sẽ xảy ra nếu bạn phải thực hiện các nhiệm vụ sau
- Nhân 2 ma trận
- Tìm nghiệm của phương trình bậc hai
- Vẽ biểu đồ thanh và biểu đồ
- Lập mô hình thống kê
- Truy cập các trang web
Nếu bạn cố gắng viết mã từ đầu, đó sẽ là một cơn ác mộng và bạn sẽ không ở lại Python quá 2 ngày. Nhưng đừng lo lắng về điều đó. Rất may, có nhiều thư viện được xác định trước mà chúng tôi có thể nhập trực tiếp vào mã của mình và giúp cuộc sống của chúng tôi trở nên dễ dàng
Ví dụ, xét ví dụ giai thừa mà chúng ta vừa thấy. Chúng ta có thể làm điều đó trong một bước duy nhất như
math.factorial[N]
Ngoài khóa học, chúng tôi cần nhập thư viện toán học cho điều đó. Hãy khám phá các thư viện khác nhau tiếp theo
Thư viện Python
Hãy đi trước một bước trong hành trình học Python của chúng ta bằng cách làm quen với một số thư viện hữu ích. Bước đầu tiên rõ ràng là học cách nhập chúng vào môi trường của chúng ta. Có một số cách để làm như vậy trong Python
from math import *[/stextbox]
Theo cách đầu tiên, chúng tôi đã xác định bí danh m cho thư viện toán học. Bây giờ chúng ta có thể sử dụng các chức năng khác nhau từ thư viện toán học [e. g. giai thừa] bằng cách tham chiếu nó bằng bí danh m. yếu tố[]
Theo cách thứ hai, bạn đã nhập toàn bộ không gian tên trong toán i. e. bạn có thể trực tiếp sử dụng giai thừa [] mà không cần tham khảo toán học
[stextbox id = “phần”] Mẹo. Google khuyên bạn nên sử dụng kiểu nhập thư viện đầu tiên, vì bạn sẽ biết nguồn gốc của các chức năng. [/stextbox]Sau đây là danh sách các thư viện, bạn sẽ cần cho bất kỳ tính toán khoa học và phân tích dữ liệu nào
- NumPy là viết tắt của Numerical Python. Tính năng mạnh mẽ nhất của NumPy là mảng n chiều. Thư viện này cũng chứa các hàm đại số tuyến tính cơ bản, biến đổi Fourier, các khả năng số ngẫu nhiên nâng cao và các công cụ để tích hợp với các ngôn ngữ cấp thấp khác như Fortran, C và C++
- SciPy là viết tắt của Khoa học Python. SciPy được xây dựng trên NumPy. Đây là một trong những thư viện hữu ích nhất cho nhiều mô-đun khoa học và kỹ thuật cấp cao như biến đổi Fourier rời rạc, Đại số tuyến tính, Tối ưu hóa và Ma trận thưa thớt
- Matplotlib để vẽ nhiều loại biểu đồ khác nhau, bắt đầu từ biểu đồ đến biểu đồ đường thẳng đến biểu đồ nhiệt. Bạn có thể sử dụng tính năng Pylab trong sổ ghi chép ipython [ipython notebook –pylab = inline] để sử dụng các tính năng vẽ đồ thị nội tuyến này. Nếu bạn bỏ qua tùy chọn nội tuyến, thì pylab sẽ chuyển đổi môi trường ipython thành môi trường, rất giống với Matlab. Bạn cũng có thể sử dụng các lệnh Latex để thêm toán học vào cốt truyện của mình
- Pandas cho các hoạt động và thao tác dữ liệu có cấu trúc. Nó được sử dụng rộng rãi để trộn và chuẩn bị dữ liệu. Pandas đã được thêm vào Python tương đối gần đây và là công cụ thúc đẩy việc sử dụng Python trong cộng đồng nhà khoa học dữ liệu
- Scikit Learn dành cho máy học. Được xây dựng trên NumPy, SciPy và matplotlib, thư viện này chứa rất nhiều công cụ hiệu quả để học máy và lập mô hình thống kê bao gồm phân loại, hồi quy, phân cụm và giảm kích thước
- Statsmodels cho mô hình thống kê. Statsmodels là một mô-đun Python cho phép người dùng khám phá dữ liệu, ước tính các mô hình thống kê và thực hiện các bài kiểm tra thống kê. Một danh sách đầy đủ các thống kê mô tả, kiểm tra thống kê, chức năng vẽ đồ thị và thống kê kết quả có sẵn cho các loại dữ liệu khác nhau và từng công cụ ước tính
- Seaborn để trực quan hóa dữ liệu thống kê. Seaborn là một thư viện để tạo đồ họa thống kê hấp dẫn và nhiều thông tin trong Python. Nó dựa trên matplotlib. Seaborn nhằm mục đích biến trực quan hóa thành một phần trung tâm của việc khám phá và hiểu dữ liệu
- Bokeh để tạo các ô tương tác, bảng điều khiển và ứng dụng dữ liệu trên các trình duyệt web hiện đại. Nó trao quyền cho người dùng để tạo đồ họa thanh lịch và súc tích theo phong cách của D3. js. Hơn nữa, nó có khả năng tương tác hiệu suất cao trên các bộ dữ liệu rất lớn hoặc trực tuyến
- Blaze để mở rộng khả năng của Numpy và Pandas cho các bộ dữ liệu phân tán và phát trực tuyến. Nó có thể được sử dụng để truy cập dữ liệu từ vô số nguồn bao gồm Bcolz, MongoDB, SQLAlchemy, Apache Spark, PyTables, v.v. Cùng với Bokeh, Blaze có thể hoạt động như một công cụ rất mạnh để tạo các bảng điều khiển và trực quan hóa hiệu quả trên khối dữ liệu khổng lồ
- Phế liệu để thu thập dữ liệu web. Nó là một khung rất hữu ích để lấy các mẫu dữ liệu cụ thể. Nó có khả năng bắt đầu từ url trang chủ của trang web và sau đó tìm hiểu qua các trang web trong trang web để thu thập thông tin
- SymPy cho tính toán tượng trưng. Nó có nhiều khả năng từ số học biểu tượng cơ bản đến phép tính, đại số, toán học rời rạc và vật lý lượng tử. Một tính năng hữu ích khác là khả năng định dạng kết quả tính toán dưới dạng mã LaTeX
- Yêu cầu truy cập web. Nó hoạt động tương tự như thư viện python tiêu chuẩn urllib2 nhưng dễ viết mã hơn nhiều. Bạn sẽ tìm thấy sự khác biệt tinh tế với urllib2 nhưng đối với người mới bắt đầu, Yêu cầu có thể thuận tiện hơn
Thư viện bổ sung, bạn có thể cần
- os cho hoạt động của hệ điều hành và tệp
- networkx và igraph cho các thao tác dữ liệu dựa trên biểu đồ
- biểu thức chính quy để tìm mẫu trong dữ liệu văn bản
- BeautifulSoup để quét web. Nó kém hơn Scrapy vì nó sẽ trích xuất thông tin từ chỉ một trang web trong một lần chạy
Bây giờ chúng ta đã quen thuộc với các nguyên tắc cơ bản của Python và các thư viện bổ sung, hãy đi sâu vào giải quyết vấn đề thông qua Python. Vâng, ý tôi là làm một mô hình dự đoán. Trong quá trình này, chúng tôi sử dụng một số thư viện mạnh mẽ và cũng bắt gặp cấp cấu trúc dữ liệu tiếp theo. Chúng tôi sẽ hướng dẫn bạn qua 3 giai đoạn chính
- Khám phá dữ liệu – tìm hiểu thêm về dữ liệu chúng tôi có
- Thu thập dữ liệu – làm sạch dữ liệu và xử lý dữ liệu để làm cho dữ liệu phù hợp hơn với mô hình thống kê
- Lập mô hình dự đoán – chạy các thuật toán thực tế và tận hưởng niềm vui 🙂
3. Phân tích thăm dò trong Python bằng Pandas
Để khám phá thêm dữ liệu của chúng tôi, hãy để tôi giới thiệu với bạn một loài động vật khác [như thể Python là không đủ. ] – Gấu trúc
Pandas là một trong những thư viện phân tích dữ liệu hữu ích nhất trong Python [Tôi biết những cái tên này nghe có vẻ kỳ lạ, nhưng hãy khoan đã. ]. Họ là công cụ giúp tăng cường sử dụng Python trong cộng đồng khoa học dữ liệu. Bây giờ, chúng tôi sẽ sử dụng Pandas để đọc tập dữ liệu từ cuộc thi Analytics Vidhya, thực hiện phân tích khám phá và xây dựng thuật toán phân loại cơ bản đầu tiên của chúng tôi để giải quyết vấn đề này
Trước khi tải dữ liệu, hãy hiểu 2 cấu trúc dữ liệu chính trong Pandas – Series và DataFrames
Giới thiệu về Sê-ri và Dataframes
Sê-ri có thể hiểu là mảng 1 chiều được gán nhãn/chỉ mục. Bạn có thể truy cập các thành phần riêng lẻ của chuỗi này thông qua các nhãn này
Một khung dữ liệu tương tự như sổ làm việc Excel - bạn có các tên cột đề cập đến các cột và bạn có các hàng, có thể được truy cập bằng cách sử dụng số hàng. Sự khác biệt cơ bản là tên cột và số hàng được gọi là chỉ mục cột và hàng, trong trường hợp khung dữ liệu
Sê-ri và khung dữ liệu tạo thành mô hình dữ liệu cốt lõi cho Pandas trong Python. Các bộ dữ liệu trước tiên được đọc vào các khung dữ liệu này và sau đó là các hoạt động khác nhau [e. g. nhóm theo, tập hợp vv. ] có thể được áp dụng rất dễ dàng cho các cột của nó
Hơn. 10 phút đến gấu trúc
Tập dữ liệu thực hành – Bài toán dự đoán khoản vay
Bạn có thể tải xuống bộ dữ liệu từ đây. Dưới đây là mô tả của các biến
[stextbox id = “grey”]VARIABLE DESCRIPTIONS: Variable Description Loan_ID Unique Loan ID Gender Male/ Female Married Applicant married [Y/N] Dependents Number of dependents Education Applicant Education [Graduate/ Under Graduate] Self_Employed Self employed [Y/N] ApplicantIncome Applicant income CoapplicantIncome Coapplicant income LoanAmount Loan amount in thousands Loan_Amount_Term Term of loan in months Credit_History credit history meets guidelines Property_Area Urban/ Semi Urban/ Rural Loan_Status Loan approved [Y/N] [/stextbox]
Hãy bắt đầu với việc khám phá
Để bắt đầu, hãy khởi động giao diện iPython ở chế độ Pylab nội tuyến bằng cách gõ lệnh sau trên dấu nhắc lệnh terminal/windows của bạn
________số 8Thao tác này sẽ mở sổ ghi chép iPython trong môi trường pylab, trong đó có một vài thư viện hữu ích đã được nhập. Ngoài ra, bạn sẽ có thể vẽ biểu đồ nội tuyến dữ liệu của mình, điều này làm cho đây trở thành một môi trường thực sự tốt để phân tích dữ liệu tương tác. Bạn có thể kiểm tra xem môi trường đã được tải chính xác chưa bằng cách nhập lệnh sau [và nhận kết quả như trong hình bên dưới]
[stextbox id = "grey"]plot[arange[5]][/stextbox]
Tôi hiện đang làm việc trên Linux và đã lưu trữ tập dữ liệu ở vị trí sau
/home/kunal/Downloads/Loan_Prediction/train. csv
Nhập thư viện và tập dữ liệu
Sau đây là các thư viện chúng tôi sẽ sử dụng trong hướng dẫn này
Xin lưu ý rằng bạn không cần nhập matplotlib và numpy vì môi trường Pylab. Tôi vẫn giữ chúng trong mã, trong trường hợp bạn sử dụng mã trong một môi trường khác
Sau khi nhập thư viện, bạn đọc tập dữ liệu bằng hàm read_csv[]. Đây là cách mã trông như thế nào cho đến giai đoạn này
fact=1 for i in range[1,N+1]: fact *= i0
Khám phá dữ liệu nhanh
Khi bạn đã đọc tập dữ liệu, bạn có thể xem một vài hàng trên cùng bằng cách sử dụng hàm head[]
fact=1 for i in range[1,N+1]: fact *= i1
Điều này sẽ in 10 hàng. Ngoài ra, bạn cũng có thể xem nhiều hàng hơn bằng cách in tập dữ liệu
Tiếp theo, bạn có thể xem tóm tắt các trường số bằng cách sử dụng hàm description[]
fact=1 for i in range[1,N+1]: fact *= i2
hàm description[] sẽ cung cấp số lượng, giá trị trung bình, độ lệch chuẩn [std], tối thiểu, tứ phân vị và tối đa trong đầu ra của nó [Đọc bài viết này để làm mới số liệu thống kê cơ bản nhằm hiểu phân bố dân số]
Dưới đây là một vài suy luận, bạn có thể rút ra bằng cách nhìn vào đầu ra của hàm description[]
- LoanAmount có [614 – 592] 22 giá trị bị thiếu
- Loan_Amount_Term có [614 – 600] 14 giá trị bị thiếu
- Credit_History có [614 – 564] 50 giá trị bị thiếu
- Chúng tôi cũng có thể thấy rằng khoảng 84% ứng viên có credit_history. Làm sao? . 84 [Hãy nhớ rằng, Credit_History có giá trị 1 đối với những người có lịch sử tín dụng và 0 nếu không]
- Phân phối thu nhập của người nộp đơn dường như phù hợp với kỳ vọng. Tương tự với CoapplicantIncome
Xin lưu ý rằng chúng ta có thể biết được độ lệch có thể có trong dữ liệu bằng cách so sánh giá trị trung bình với giá trị trung bình, tôi. e. con số 50%
Đối với các giá trị không phải là số [e. g. Thuộc tính_Khu vực, Tín dụng_Lịch sử, v.v. ], chúng ta có thể xem phân phối tần suất để hiểu liệu chúng có ý nghĩa hay không. Bảng tần số có thể được in bằng lệnh sau
fact=1 for i in range[1,N+1]: fact *= i3
Tương tự, chúng ta có thể xem xét các giá trị duy nhất của cổng lịch sử tín dụng. Lưu ý rằng df name[‘column_name’] là một kỹ thuật lập chỉ mục cơ bản để truy cập vào một cột cụ thể của khung dữ liệu. Nó cũng có thể là một danh sách các cột. Để biết thêm thông tin, hãy tham khảo tài nguyên “10 Minutes to Pandas” được chia sẻ ở trên
phân tích phân phối
Bây giờ chúng ta đã quen thuộc với các đặc điểm dữ liệu cơ bản, chúng ta hãy nghiên cứu phân phối của các biến khác nhau. Hãy để chúng tôi bắt đầu với các biến số - cụ thể là ApplicantIncome và LoanAmount
Hãy bắt đầu bằng cách vẽ biểu đồ của ApplicantIncome bằng cách sử dụng các lệnh sau
fact=1 for i in range[1,N+1]: fact *= i4
Ở đây chúng tôi quan sát thấy rằng có một vài giá trị cực đoan. Đây cũng là lý do tại sao cần 50 thùng để mô tả rõ ràng sự phân bổ
Tiếp theo, chúng tôi xem xét các biểu đồ hộp để hiểu các bản phân phối. Biểu đồ hộp cho giá vé có thể được vẽ bởi
fact=1 for i in range[1,N+1]: fact *= i5
Điều này xác nhận sự hiện diện của rất nhiều ngoại lệ/giá trị cực đoan. Điều này có thể là do sự chênh lệch thu nhập trong xã hội. Một phần của điều này có thể do thực tế là chúng tôi đang xem xét những người có trình độ học vấn khác nhau. Hãy để chúng tôi tách biệt chúng theo Giáo dục
fact=1 for i in range[1,N+1]: fact *= i6
Chúng ta có thể thấy rằng không có sự khác biệt đáng kể giữa thu nhập trung bình của sinh viên tốt nghiệp và không tốt nghiệp. Nhưng có một số lượng lớn sinh viên tốt nghiệp có thu nhập rất cao, dường như là ngoại lệ
Bây giờ, hãy xem biểu đồ và boxplot của LoanAmount bằng lệnh sau
fact=1 for i in range[1,N+1]: fact *= i7____18
Một lần nữa, có một số giá trị cực đoan. Rõ ràng, cả Thu nhập của người nộp đơn và Khoản vay đều yêu cầu một số lượng dữ liệu trộn lẫn. LoanAmount có các giá trị bị thiếu và cũng như các giá trị cực đoan, trong khi ApplicantIncome có một vài giá trị cực đoan, đòi hỏi sự hiểu biết sâu sắc hơn. Chúng tôi sẽ đưa vấn đề này vào các phần tiếp theo
Phân tích biến phân loại
Bây giờ chúng ta đã hiểu phân phối cho ApplicantIncome và LoanIncome, hãy để chúng ta hiểu chi tiết hơn về các biến phân loại. Chúng tôi sẽ sử dụng bảng tổng hợp kiểu Excel và lập bảng chéo. Chẳng hạn, chúng ta hãy xem xét cơ hội nhận khoản vay dựa trên lịch sử tín dụng. Điều này có thể đạt được trong MS Excel bằng cách sử dụng bảng tổng hợp như
Ghi chú. ở đây trạng thái cho vay đã được mã hóa thành 1 cho Có và 0 cho Không. Vì vậy, giá trị trung bình đại diện cho xác suất nhận được khoản vay
Bây giờ chúng ta sẽ xem xét các bước cần thiết để tạo thông tin chi tiết tương tự bằng Python. Vui lòng tham khảo bài viết này để nắm rõ các kỹ thuật thao tác dữ liệu khác nhau trong Pandas
fact=1 for i in range[1,N+1]: fact *= i9
Bây giờ chúng ta có thể quan sát thấy rằng chúng ta có một pivot_table tương tự như MS Excel. Điều này có thể được vẽ dưới dạng biểu đồ thanh bằng thư viện “matplotlib” với mã sau
if [condition]: __execution if true__ else: __execution if false__0
Điều này cho thấy cơ hội nhận được khoản vay gấp tám lần nếu người nộp đơn có lịch sử tín dụng hợp lệ. Bạn có thể vẽ đồ thị tương tự theo Married, Self-Employed, Property_Area, v.v.
Ngoài ra, hai biểu đồ này cũng có thể được hiển thị bằng cách kết hợp chúng trong biểu đồ xếp chồng
if [condition]: __execution if true__ else: __execution if false__1
Bạn cũng có thể thêm giới tính vào danh sách kết hợp [tương tự như bảng tổng hợp trong Excel]
Nếu bạn chưa nhận ra, thì chúng tôi vừa tạo hai thuật toán phân loại cơ bản ở đây, một thuật toán dựa trên lịch sử tín dụng, còn thuật toán kia dựa trên 2 biến phân loại [bao gồm cả giới tính]. Bạn có thể nhanh chóng viết mã này để tạo lần gửi đầu tiên của mình trên AV Datahacks
Chúng ta vừa thấy cách chúng ta có thể thực hiện phân tích khám phá bằng Python bằng Pandas. Tôi hy vọng tình yêu của bạn dành cho gấu trúc [con vật] sẽ tăng lên ngay bây giờ - với số lượng trợ giúp, thư viện có thể cung cấp cho bạn các bộ dữ liệu phân tích
Tiếp theo, hãy cùng khám phá thêm các biến ApplicantIncome và LoanStatus, thực hiện trộn dữ liệu và tạo tập dữ liệu để áp dụng các kỹ thuật lập mô hình khác nhau. Tôi thực sự khuyên bạn nên lấy một tập dữ liệu và bài toán khác, đồng thời xem qua một ví dụ độc lập trước khi đọc thêm
4. Dữ liệu Munging trong Python. Sử dụng gấu trúc
Đối với những người đã theo dõi, đây là đôi giày bạn phải mang để bắt đầu chạy
Trộn dữ liệu – tóm tắt nhu cầu
Trong khi khám phá dữ liệu, chúng tôi đã tìm thấy một số vấn đề trong tập dữ liệu, vấn đề này cần được giải quyết trước khi dữ liệu sẵn sàng cho một mô hình tốt. Bài tập này thường được gọi là "Mung dữ liệu". Đây là những vấn đề, chúng tôi đã nhận thức được
- Có giá trị bị thiếu trong một số biến. Chúng ta nên ước tính những giá trị đó một cách khôn ngoan tùy thuộc vào số lượng giá trị bị thiếu và tầm quan trọng dự kiến của các biến
- Khi xem xét các bản phân phối, chúng tôi thấy rằng Thu nhập của người nộp đơn và Số tiền cho vay dường như chứa các giá trị cực đoan ở cả hai đầu. Mặc dù chúng có thể có ý nghĩa trực quan, nhưng cần được xử lý thích hợp
Ngoài những vấn đề này với các trường số, chúng ta cũng nên xem xét các trường không phải là số. e. Giới tính, Tài sản_Khu vực, Đã kết hôn, Học vấn và Người phụ thuộc để xem chúng có chứa bất kỳ thông tin hữu ích nào không
Nếu bạn chưa quen với Pandas, tôi khuyên bạn nên đọc bài viết này trước khi tiếp tục. Nó trình bày chi tiết một số kỹ thuật thao tác dữ liệu hữu ích
Kiểm tra các giá trị còn thiếu trong tập dữ liệu
Chúng ta hãy xem xét các giá trị bị thiếu trong tất cả các biến vì hầu hết các mô hình không hoạt động với dữ liệu bị thiếu và ngay cả khi chúng có, việc gán chúng thường xuyên hơn là không. Vì vậy, hãy để chúng tôi kiểm tra số lượng null / NaN trong tập dữ liệu
if [condition]: __execution if true__ else: __execution if false__2
Lệnh này sẽ cho chúng ta biết số lượng giá trị bị thiếu trong mỗi cột là isnull[] trả về 1, nếu giá trị là null
Mặc dù các giá trị bị thiếu không nhiều về số lượng, nhưng nhiều biến có chúng và mỗi một trong số chúng nên được ước tính và thêm vào dữ liệu. Nhận một cái nhìn chi tiết về các kỹ thuật quy nạp khác nhau thông qua bài viết này
Ghi chú. Hãy nhớ rằng các giá trị bị thiếu có thể không phải lúc nào cũng là NaN. Chẳng hạn, nếu Loan_Amount_Term bằng 0, điều đó có hợp lý hay bạn sẽ cho rằng điều đó bị thiếu? . Vì vậy, chúng ta nên kiểm tra các giá trị không thực tế
Làm cách nào để điền các giá trị còn thiếu vào LoanAmount?
Có nhiều cách để lấp đầy các giá trị còn thiếu của số tiền cho vay – cách đơn giản nhất là thay thế bằng giá trị trung bình, có thể thực hiện bằng mã sau
if [condition]: __execution if true__ else: __execution if false__3
Một thái cực khác có thể là xây dựng một mô hình học tập có giám sát để dự đoán số tiền cho vay dựa trên các biến số khác, sau đó sử dụng độ tuổi cùng với các biến số khác để dự đoán khả năng sống sót
Vì, mục đích bây giờ là đưa ra các bước trong quá trình trộn dữ liệu, nên tôi sẽ thực hiện một phương pháp nằm ở đâu đó giữa 2 thái cực này. Một giả thuyết quan trọng là liệu một người có học thức hay tự làm chủ có thể kết hợp để đưa ra ước tính chính xác về số tiền cho vay hay không
Đầu tiên, hãy nhìn vào boxplot để xem xu hướng có tồn tại không
Vì vậy, chúng tôi thấy một số thay đổi trong số tiền trung bình của khoản vay cho mỗi nhóm và điều này có thể được sử dụng để quy các giá trị. Nhưng trước tiên, chúng ta phải đảm bảo rằng mỗi biến Self_Employed và Education không được thiếu giá trị
Như chúng tôi đã nói trước đó, Self_Employed có một số giá trị bị thiếu. Hãy nhìn vào bảng tần số
Vì ~86% giá trị là “Không”, nên có thể coi các giá trị còn thiếu là “Không” một cách an toàn vì có khả năng thành công cao. Điều này có thể được thực hiện bằng cách sử dụng đoạn mã sau
if [condition]: __execution if true__ else: __execution if false__4
Bây giờ, chúng tôi sẽ tạo một bảng Pivot, cung cấp cho chúng tôi các giá trị trung bình cho tất cả các nhóm giá trị duy nhất của các tính năng Self_Employed và Education. Tiếp theo, chúng tôi xác định một hàm trả về các giá trị của các ô này và áp dụng nó để điền vào các giá trị còn thiếu của số tiền cho vay
if [condition]: __execution if true__ else: __execution if false__5
Điều này sẽ cung cấp cho bạn một cách tốt để quy các giá trị còn thiếu của số tiền cho vay
GHI CHÚ. Phương pháp này sẽ chỉ hoạt động nếu bạn chưa điền các giá trị còn thiếu vào biến Số_Khoản vay bằng cách sử dụng phương pháp trước đó, tôi. e. sử dụng ý nghĩa
Làm cách nào để xử lý các giá trị cực đoan trong phân phối Số tiền cho vay và Thu nhập của người đăng ký?
Trước tiên hãy phân tích LoanAmount. Vì các giá trị cực đoan là thực tế có thể, tôi. e. một số người có thể đăng ký các khoản vay giá trị cao do nhu cầu cụ thể. Vì vậy, thay vì coi chúng là ngoại lệ, hãy thử chuyển đổi nhật ký để vô hiệu hóa hiệu ứng của chúng
if [condition]: __execution if true__ else: __execution if false__6
Nhìn vào biểu đồ một lần nữa
Giờ đây, phân phối trông gần với bình thường hơn nhiều và ảnh hưởng của các giá trị cực trị đã giảm đi đáng kể
Đến với thu nhập của người nộp đơn. Một trực giác có thể là một số ứng viên có thu nhập thấp hơn nhưng được hỗ trợ mạnh mẽ Những người cùng nộp đơn. Vì vậy, có thể là một ý tưởng hay nếu kết hợp cả hai thu nhập dưới dạng tổng thu nhập và thực hiện chuyển đổi nhật ký của cùng một
if [condition]: __execution if true__ else: __execution if false__7
Bây giờ chúng tôi thấy rằng phân phối tốt hơn nhiều so với trước đây. Tôi sẽ để bạn tự quy định các giá trị còn thiếu cho Giới tính, Đã kết hôn, Người phụ thuộc, Khoản vay_Số tiền_Kỳ hạn, Tín dụng_Lịch sử. Ngoài ra, tôi khuyến khích bạn suy nghĩ về thông tin bổ sung có thể có được từ dữ liệu. Ví dụ: tạo một cột cho Khoản vay/Tổng thu nhập có thể có ý nghĩa vì nó đưa ra ý tưởng về mức độ phù hợp của người nộp đơn để trả lại khoản vay của mình
Tiếp theo, chúng ta sẽ xem xét việc tạo ra các mô hình dự đoán
5. Xây dựng một mô hình dự đoán trong Python
Sau khi, chúng tôi đã làm cho dữ liệu trở nên hữu ích cho việc lập mô hình, bây giờ hãy xem mã python để tạo mô hình dự đoán trên tập dữ liệu của chúng tôi. Scikit-Learn [sklearn] là thư viện được sử dụng phổ biến nhất trong Python cho mục đích này và chúng ta sẽ lần theo dấu vết. Tôi khuyến khích bạn xem lại sklearn qua bài viết này
Vì sklearn yêu cầu tất cả các đầu vào phải là số, nên chúng ta nên chuyển đổi tất cả các biến phân loại thành số bằng cách mã hóa các danh mục. Trước đó, chúng tôi sẽ điền vào tất cả các giá trị còn thiếu trong tập dữ liệu. Điều này có thể được thực hiện bằng cách sử dụng đoạn mã sau
if [condition]: __execution if true__ else: __execution if false__8
if [condition]: __execution if true__ else: __execution if false__9
Tiếp theo, chúng tôi sẽ nhập các mô-đun cần thiết. Sau đó, chúng tôi sẽ xác định một chức năng phân loại chung, lấy một mô hình làm đầu vào và xác định điểm số Độ chính xác và Xác thực chéo. Vì đây là bài viết giới thiệu nên tôi sẽ không đi sâu vào chi tiết về mã hóa. Vui lòng tham khảo bài viết này để biết chi tiết các thuật toán với mã R và Python. Ngoài ra, bạn nên xem lại quy trình xác thực chéo thông qua bài viết này vì đây là thước đo hiệu suất năng lượng rất quan trọng
if N%2 == 0: print ['Even'] else: print ['Odd']0
Hồi quy logistic
Hãy tạo mô hình Hồi quy logistic đầu tiên của chúng ta. Có một cách là đưa tất cả các biến vào mô hình nhưng điều này có thể dẫn đến việc khớp quá mức [đừng lo lắng nếu bạn chưa biết về thuật ngữ này]. Nói một cách đơn giản, việc lấy tất cả các biến có thể dẫn đến việc mô hình hiểu các mối quan hệ phức tạp cụ thể đối với dữ liệu và sẽ không khái quát hóa tốt. Đọc thêm về hồi quy logistic
Chúng ta có thể dễ dàng đưa ra một số giả thuyết trực quan để thiết lập quả bóng lăn. Cơ hội nhận được khoản vay sẽ cao hơn đối với
- Các ứng viên có lịch sử tín dụng [hãy nhớ rằng chúng tôi đã quan sát thấy điều này trong quá trình thăm dò?]
- Người nộp đơn có thu nhập của người nộp đơn và người đồng nộp đơn cao hơn
- Ứng viên có trình độ học vấn cao hơn
- Bất động sản tại các khu đô thị có triển vọng tăng trưởng cao
Vì vậy, hãy tạo mô hình đầu tiên của chúng ta với ‘Credit_History’
if N%2 == 0: print ['Even'] else: print ['Odd']1
Sự chính xác. 80. Điểm xác thực chéo 945%. 80. 946%
if N%2 == 0: print ['Even'] else: print ['Odd']2
Sự chính xác. 80. Điểm xác thực chéo 945%. 80. 946%
Nói chung, chúng tôi hy vọng độ chính xác sẽ tăng lên khi thêm các biến. Nhưng đây là một trường hợp khó khăn hơn. Điểm chính xác và xác thực chéo không bị ảnh hưởng bởi các biến ít quan trọng hơn. Credit_History đang thống trị chế độ. Bây giờ chúng ta có hai lựa chọn
- Kỹ thuật tính năng. nhận thông tin mới và cố gắng dự đoán những thông tin đó. Tôi sẽ để điều này cho sự sáng tạo của bạn
- Kỹ thuật mô hình hóa tốt hơn. Hãy khám phá điều này tiếp theo
cây quyết định
Cây quyết định là một phương pháp khác để tạo mô hình dự đoán. Nó được biết là cung cấp độ chính xác cao hơn mô hình hồi quy logistic. Đọc thêm về Cây quyết định
if N%2 == 0: print ['Even'] else: print ['Odd']3
Sự chính xác. 81. Điểm xác thực chéo 930%. 76. 656%
Ở đây, mô hình dựa trên các biến phân loại không thể có tác động vì Lịch sử tín dụng đang chi phối chúng. Hãy thử một vài biến số
if N%2 == 0: print ['Even'] else: print ['Odd']4
Sự chính xác. 92. Điểm xác thực chéo 345%. 71. 009%
Ở đây, chúng tôi quan sát thấy rằng mặc dù độ chính xác tăng lên khi thêm các biến, nhưng lỗi xác thực chéo đã giảm xuống. Đây là kết quả của mô hình khớp dữ liệu quá mức. Hãy thử một thuật toán thậm chí phức tạp hơn và xem liệu nó có hữu ích không
rừng ngẫu nhiên
Rừng ngẫu nhiên là một thuật toán khác để giải quyết vấn đề phân loại. Đọc thêm về Random Forest
Một lợi thế với Random Forest là chúng ta có thể làm cho nó hoạt động với tất cả các tính năng và nó trả về một ma trận tầm quan trọng của tính năng có thể được sử dụng để chọn các tính năng
if N%2 == 0: print ['Even'] else: print ['Odd']5
Sự chính xác. 100. Điểm xác thực chéo 000%. 78. 179%
Ở đây chúng tôi thấy rằng độ chính xác là 100% cho tập huấn luyện. Đây là trường hợp cuối cùng của overfitting và có thể được giải quyết theo hai cách
- Giảm số lượng dự đoán
- Điều chỉnh các tham số mô hình
Hãy thử cả hai. Trước tiên, chúng tôi thấy ma trận tầm quan trọng của tính năng mà từ đó chúng tôi sẽ lấy các tính năng quan trọng nhất
if N%2 == 0: print ['Even'] else: print ['Odd']6
Hãy sử dụng 5 biến hàng đầu để tạo mô hình. Ngoài ra, chúng tôi sẽ sửa đổi các tham số của mô hình rừng ngẫu nhiên một chút
if N%2 == 0: print ['Even'] else: print ['Odd']7
Sự chính xác. 82. Điểm xác thực chéo 899%. 81. 461%
Lưu ý rằng mặc dù độ chính xác giảm nhưng điểm xác thực chéo đang được cải thiện cho thấy mô hình đang tổng quát hóa tốt. Hãy nhớ rằng các mô hình rừng ngẫu nhiên không thể lặp lại chính xác. Các lần chạy khác nhau sẽ dẫn đến các thay đổi nhỏ do ngẫu nhiên hóa. Nhưng đầu ra nên ở trong sân bóng
Bạn sẽ nhận thấy rằng ngay cả sau khi điều chỉnh một số tham số cơ bản trên rừng ngẫu nhiên, chúng tôi đã đạt được độ chính xác xác thực chéo chỉ tốt hơn một chút so với mô hình hồi quy logistic ban đầu. Bài tập này mang lại cho chúng ta một số kiến thức rất thú vị và độc đáo
- Sử dụng một mô hình phức tạp hơn không đảm bảo kết quả tốt hơn
- Tránh sử dụng các kỹ thuật lập mô hình phức tạp như một hộp đen mà không hiểu các khái niệm cơ bản. Làm như vậy sẽ làm tăng xu hướng trang bị quá mức, do đó làm cho mô hình của bạn khó diễn giải hơn
- Feature Engineering là chìa khóa thành công. Mọi người đều có thể sử dụng các mô hình Xgboost nhưng nghệ thuật và sự sáng tạo thực sự nằm ở việc nâng cao các tính năng của bạn để phù hợp hơn với mô hình
Bạn có thể truy cập tập dữ liệu và báo cáo vấn đề được sử dụng trong bài đăng này tại liên kết này. Thử thách dự đoán khoản vay
dự án
Bây giờ, đã đến lúc lao vào và thực sự chơi với một số bộ dữ liệu thực khác. Vậy bạn đã sẵn sàng đón nhận thử thách chưa?
Ghi chú kết thúc
Tôi hy vọng hướng dẫn này sẽ giúp bạn tối đa hóa hiệu quả khi bắt đầu với khoa học dữ liệu trong Python. Tôi chắc chắn rằng điều này không chỉ cung cấp cho bạn ý tưởng về các phương pháp phân tích dữ liệu cơ bản mà còn cho bạn thấy cách triển khai một số kỹ thuật tinh vi hơn hiện có
Bạn cũng nên xem khóa học Python miễn phí của chúng tôi và sau đó chuyển sang tìm hiểu cách áp dụng nó cho Khoa học dữ liệu
Python thực sự là một công cụ tuyệt vời và đang trở thành ngôn ngữ ngày càng phổ biến trong giới khoa học dữ liệu. Lý do là nó dễ học, tích hợp tốt với các cơ sở dữ liệu và công cụ khác như Spark và Hadoop. Chủ yếu, nó có cường độ tính toán lớn và có các thư viện phân tích dữ liệu mạnh mẽ
Vì vậy, hãy học Python để thực hiện toàn bộ vòng đời của bất kỳ dự án khoa học dữ liệu nào. Nó bao gồm đọc, phân tích, hình dung và cuối cùng là đưa ra dự đoán
Nếu bạn gặp bất kỳ khó khăn nào trong khi thực hành Python hoặc bạn có bất kỳ suy nghĩ/gợi ý/phản hồi nào về bài đăng, vui lòng gửi chúng qua phần bình luận bên dưới