PySpark Python
Spark là một giải pháp dữ liệu lớn đã được chứng minh là dễ dàng và nhanh hơn Hadoop MapReduce. Spark là một phần mềm mã nguồn mở được phát triển bởi phòng thí nghiệm UC Berkeley RAD vào năm 2009. Kể từ khi ra mắt công chúng vào năm 2010, Spark đã trở nên phổ biến và được sử dụng trong toàn ngành với quy mô chưa từng có Show
Trong kỷ nguyên Dữ liệu lớn, các học viên cần hơn bao giờ hết các công cụ nhanh và đáng tin cậy để xử lý luồng dữ liệu. Các công cụ trước đó như MapReduce được yêu thích nhưng chậm. Để khắc phục vấn đề này, Spark đưa ra một giải pháp vừa nhanh vừa đa năng. Sự khác biệt chính giữa Spark và MapReduce là Spark chạy các tính toán trong bộ nhớ sau này trên đĩa cứng. Nó cho phép truy cập và xử lý dữ liệu tốc độ cao, giảm thời gian từ hàng giờ xuống còn vài phút PySpark là gì?PySpark là một công cụ được tạo bởi Cộng đồng Apache Spark để sử dụng Python với Spark. Nó cho phép làm việc với RDD (Bộ dữ liệu phân tán đàn hồi) trong Python. Nó cũng cung cấp PySpark Shell để liên kết API Python với lõi Spark để khởi tạo Bối cảnh Spark. Spark là công cụ tên để hiện thực hóa điện toán cụm, trong khi PySpark là thư viện của Python để sử dụng Spark Trong hướng dẫn PySpark dành cho người mới bắt đầu này, bạn sẽ tìm hiểu những điều cơ bản về PySpark như- Spark hoạt động như thế nào?Spark dựa trên công cụ tính toán, có nghĩa là nó đảm nhiệm việc lập lịch trình, phân phối và giám sát ứng dụng. Mỗi tác vụ được thực hiện trên nhiều máy công nhân khác nhau được gọi là cụm máy tính. Một cụm máy tính đề cập đến việc phân chia các nhiệm vụ. Một máy thực hiện một tác vụ, trong khi các máy khác đóng góp vào đầu ra cuối cùng thông qua một tác vụ khác. Cuối cùng, tất cả các nhiệm vụ được tổng hợp để tạo ra một đầu ra. Quản trị viên Spark cung cấp tổng quan 360 độ về các Công việc Spark khác nhau Spark hoạt động như thế nào Spark được thiết kế để làm việc với
Một tính năng quan trọng của Spark là số lượng lớn thư viện tích hợp sẵn, bao gồm cả MLlib dành cho máy học. Spark cũng được thiết kế để hoạt động với các cụm Hadoop và có thể đọc nhiều loại tệp, bao gồm dữ liệu Hive, CSV, JSON, dữ liệu Casandra trong số những loại khác Tại sao nên sử dụng Spark?Là một người thực hành dữ liệu trong tương lai, bạn nên làm quen với các thư viện nổi tiếng của python. Gấu trúc và scikit-learning. Hai thư viện này thật tuyệt vời để khám phá các bộ dữ liệu có kích thước trung bình. Các dự án học máy thông thường được xây dựng dựa trên phương pháp sau
Vấn đề phát sinh nếu nhà khoa học dữ liệu muốn xử lý dữ liệu quá lớn đối với một máy tính. Trong những ngày đầu của khoa học dữ liệu, các học viên sẽ lấy mẫu vì không phải lúc nào cũng cần đào tạo về các tập dữ liệu khổng lồ. Nhà khoa học dữ liệu sẽ tìm một mẫu thống kê tốt, thực hiện kiểm tra độ tin cậy bổ sung và đưa ra một mô hình xuất sắc Tuy nhiên, có một số vấn đề với điều này
Lấy đề xuất của người dùng làm ví dụ. Người giới thiệu dựa vào việc so sánh người dùng với những người dùng khác để đánh giá sở thích của họ. Nếu người thực hành dữ liệu chỉ lấy một tập hợp con dữ liệu, thì sẽ không có một nhóm người dùng nào rất giống nhau. Người giới thiệu cần chạy trên bộ dữ liệu đầy đủ hoặc hoàn toàn không Giải pháp là gì? Giải pháp đã rõ ràng từ lâu, chia vấn đề thành nhiều máy tính. Tính toán song song cũng có nhiều vấn đề. Các nhà phát triển thường gặp khó khăn khi viết mã song song và cuối cùng phải giải quyết một loạt các vấn đề phức tạp xung quanh đa xử lý. Pyspark cung cấp cho nhà khoa học dữ liệu một API có thể được sử dụng để giải quyết các vấn đề về quy trình dữ liệu song song. Pyspark xử lý sự phức tạp của đa xử lý, chẳng hạn như phân phối dữ liệu, phân phối mã và thu thập đầu ra từ các công nhân trên một cụm máy Spark có thể chạy độc lập nhưng thường chạy trên khung tính toán cụm như Hadoop. Tuy nhiên, trong quá trình thử nghiệm và phát triển, một nhà khoa học dữ liệu có thể chạy Spark một cách hiệu quả trên hộp phát triển hoặc máy tính xách tay của họ mà không cần cụm • Một trong những ưu điểm chính của Spark là xây dựng một kiến trúc bao gồm quản lý luồng dữ liệu, truy vấn dữ liệu liền mạch, dự đoán học máy và truy cập thời gian thực vào các phân tích khác nhau • Spark hoạt động chặt chẽ với ngôn ngữ SQL, i. e. , Dữ liệu có cấu trúc. Nó cho phép truy vấn dữ liệu trong thời gian thực • Công việc chính của nhà khoa học dữ liệu là phân tích và xây dựng các mô hình dự đoán. Nói tóm lại, một nhà khoa học dữ liệu cần biết cách truy vấn dữ liệu bằng SQL, tạo báo cáo thống kê và sử dụng máy học để đưa ra dự đoán. Các nhà khoa học dữ liệu dành một lượng thời gian đáng kể để làm sạch, chuyển đổi và phân tích dữ liệu. Khi bộ dữ liệu hoặc quy trình làm việc dữ liệu đã sẵn sàng, nhà khoa học dữ liệu sử dụng các kỹ thuật khác nhau để khám phá thông tin chi tiết và các mẫu ẩn. Thao tác dữ liệu phải mạnh mẽ và dễ sử dụng. Spark là công cụ phù hợp nhờ tốc độ và API phong phú Trong hướng dẫn PySpark này, bạn sẽ học cách xây dựng bộ phân loại với các ví dụ về PySpark Cách cài đặt PySpark với AWSNhóm Jupyter xây dựng hình ảnh Docker để chạy Spark hiệu quả. Dưới đây là các bước bạn có thể làm theo để cài đặt phiên bản PySpark trong AWS Tham khảo hướng dẫn của chúng tôi về AWS và TensorFlow Bước 1. Tạo một phiên bản Trước hết, bạn cần tạo một thể hiện. Truy cập tài khoản AWS của bạn và khởi chạy phiên bản. Bạn có thể tăng dung lượng lưu trữ lên tới 15g và sử dụng cùng một nhóm bảo mật như trong hướng dẫn TensorFlow Bước 2. Mở kết nối Mở kết nối và cài đặt docker container. Để biết thêm chi tiết, hãy tham khảo hướng dẫn với TensorFlow với Docker. Lưu ý rằng, bạn cần vào đúng thư mục làm việc Chỉ cần chạy các mã này để cài đặt Docker sudo yum update -y sudo yum install -y docker sudo service docker start sudo user-mod -a -G docker ec2-user exit Bước 3. Mở lại kết nối và cài đặt Spark Sau khi mở lại kết nối, bạn có thể cài đặt image chứa PySpark ## Spark docker run -v ~/work:/home/jovyan/work -d -p 8888:8888 jupyter/pyspark-notebook ## Allow preserving Jupyter notebook sudo chown 1000 ~/work ## Install tree to see our working directory next sudo yum install -y tree Bước 4. Mở Jupyter Kiểm tra container và tên của nó docker ps Khởi chạy docker với nhật ký docker theo sau là tên của docker. Chẳng hạn, docker logs zealous goldwasser Truy cập trình duyệt của bạn và khởi chạy Jupyter. địa chỉ là http. //máy chủ cục bộ. 8888/. Dán mật khẩu được cung cấp bởi thiết bị đầu cuối Ghi chú. nếu bạn muốn tải lên/tải xuống tệp vào máy AWS của mình, bạn có thể sử dụng phần mềm Cyberduck, https. //duck điện tử. io/ Cách cài đặt PySpark trên Windows/Mac với CondaSau đây là quy trình chi tiết về cách cài đặt PySpark trên Windows/Mac bằng Anaconda Để cài đặt Spark trên máy cục bộ của bạn, một phương pháp được khuyến nghị là tạo một môi trường conda mới. Môi trường mới này sẽ cài đặt Python 3. 6, Spark và tất cả các phụ thuộc Người dùng Mac cd anaconda3 touch hello-spark.yml vi hello-spark.yml Người dùng Windows cd C:\Users\Admin\Anaconda3 echo.>hello-spark.yml notepad hello-spark.yml Bạn có thể chỉnh sửa. tập tin yml. Thận trọng với vết lõm. Cần có hai khoảng trắng trước – name: hello-spark dependencies: - python=3.6 - jupyter - ipython - numpy - numpy-base - pandas - py4j - pyspark - pytz Lưu nó và tạo môi trường. Phải mất một thời gian conda env create -f hello-spark.yml Để biết thêm chi tiết về vị trí, vui lòng xem hướng dẫn Cài đặt TensorFlow Bạn có thể kiểm tra tất cả các môi trường được cài đặt trong máy của bạn conda env list Activate hello-spark Người dùng Mac source activate hello-spark Người dùng Windows ## Spark docker run -v ~/work:/home/jovyan/work -d -p 8888:8888 jupyter/pyspark-notebook ## Allow preserving Jupyter notebook sudo chown 1000 ~/work ## Install tree to see our working directory next sudo yum install -y tree0 Ghi chú. Bạn đã tạo một môi trường TensorFlow cụ thể để chạy các hướng dẫn trên TensorFlow. Sẽ thuận tiện hơn khi tạo một môi trường mới khác với hello-tf. Thật vô nghĩa khi quá tải hello-tf với Spark hoặc bất kỳ thư viện máy học nào khác Hãy tưởng tượng hầu hết dự án của bạn liên quan đến TensorFlow, nhưng bạn cần sử dụng Spark cho một dự án cụ thể. Bạn có thể đặt môi trường TensorFlow cho tất cả các dự án của mình và tạo một môi trường riêng cho Spark. Bạn có thể thêm bao nhiêu thư viện trong môi trường Spark tùy thích mà không can thiệp vào môi trường TensorFlow. Khi bạn đã hoàn thành dự án của Spark, bạn có thể xóa nó mà không ảnh hưởng đến môi trường TensorFlow bề mặt JuMở Jupyter Notebook và thử xem PySpark có hoạt động không. Trong sổ ghi chép mới, dán mã mẫu PySpark sau ## Spark docker run -v ~/work:/home/jovyan/work -d -p 8888:8888 jupyter/pyspark-notebook ## Allow preserving Jupyter notebook sudo chown 1000 ~/work ## Install tree to see our working directory next sudo yum install -y tree1 Nếu báo lỗi thì có thể máy bạn chưa cài Java. Trong mac, mở terminal và viết java -version, nếu có phiên bản java, hãy đảm bảo đó là 1. 8. Trong Windows, vào Ứng dụng và kiểm tra xem có thư mục Java không. Nếu có một thư mục Java, hãy kiểm tra Java 1. 8 được cài đặt. Khi viết bài này, PySpark không tương thích với Java9 trở lên Nếu cần cài Java, bạn nghĩ link và download jdk-8u181-windows-x64. người cũ Đối với Người dùng Mac, nên sử dụng `brew. ` ## Spark docker run -v ~/work:/home/jovyan/work -d -p 8888:8888 jupyter/pyspark-notebook ## Allow preserving Jupyter notebook sudo chown 1000 ~/work ## Install tree to see our working directory next sudo yum install -y tree2 Tham khảo hướng dẫn từng bước này về cách cài đặt Java Ghi chú. Sử dụng remove để xóa hoàn toàn một môi trường ## Spark docker run -v ~/work:/home/jovyan/work -d -p 8888:8888 jupyter/pyspark-notebook ## Allow preserving Jupyter notebook sudo chown 1000 ~/work ## Install tree to see our working directory next sudo yum install -y tree3 bối cảnh tia lửaSparkContext là công cụ nội bộ cho phép kết nối với các cụm. Nếu bạn muốn chạy một hoạt động, bạn cần có SparkContext Tạo SparkContext Trước hết, bạn cần khởi tạo SparkContext ## Spark docker run -v ~/work:/home/jovyan/work -d -p 8888:8888 jupyter/pyspark-notebook ## Allow preserving Jupyter notebook sudo chown 1000 ~/work ## Install tree to see our working directory next sudo yum install -y tree1 Bây giờ SparkContext đã sẵn sàng, bạn có thể tạo một tập hợp dữ liệu có tên RDD, Bộ dữ liệu phân tán đàn hồi. Tính toán trong RDD được tự động song song hóa trên toàn cụm ## Spark docker run -v ~/work:/home/jovyan/work -d -p 8888:8888 jupyter/pyspark-notebook ## Allow preserving Jupyter notebook sudo chown 1000 ~/work ## Install tree to see our working directory next sudo yum install -y tree5 Bạn có thể truy cập vào hàng đầu tiên với take ## Spark docker run -v ~/work:/home/jovyan/work -d -p 8888:8888 jupyter/pyspark-notebook ## Allow preserving Jupyter notebook sudo chown 1000 ~/work ## Install tree to see our working directory next sudo yum install -y tree6 ## Spark docker run -v ~/work:/home/jovyan/work -d -p 8888:8888 jupyter/pyspark-notebook ## Allow preserving Jupyter notebook sudo chown 1000 ~/work ## Install tree to see our working directory next sudo yum install -y tree7 Bạn có thể áp dụng chuyển đổi cho dữ liệu bằng hàm lambda. Trong ví dụ PySpark bên dưới, bạn trả về bình phương các số. Đó là một phép biến đổi bản đồ ## Spark docker run -v ~/work:/home/jovyan/work -d -p 8888:8888 jupyter/pyspark-notebook ## Allow preserving Jupyter notebook sudo chown 1000 ~/work ## Install tree to see our working directory next sudo yum install -y tree8 ## Spark docker run -v ~/work:/home/jovyan/work -d -p 8888:8888 jupyter/pyspark-notebook ## Allow preserving Jupyter notebook sudo chown 1000 ~/work ## Install tree to see our working directory next sudo yum install -y tree9 SQLContextMột cách thuận tiện hơn là sử dụng DataFrame. SparkContext đã được đặt, bạn có thể sử dụng nó để tạo dataFrame. Bạn cũng cần khai báo SQLContext SQLContext cho phép kết nối engine với các nguồn dữ liệu khác nhau. Nó được sử dụng để bắt đầu các chức năng của Spark SQL docker ps0 Bây giờ trong Python hướng dẫn Spark này, hãy tạo một danh sách các bộ dữ liệu. Mỗi bộ dữ liệu sẽ chứa tên của mọi người và tuổi của họ. Cần có bốn bước Bước 1) Tạo danh sách các bộ dữ liệu với thông tin docker ps1 Bước 2) Xây dựng RDD docker ps2 Bước 3) Chuyển đổi các bộ dữ liệu docker ps3 Bước 4) Tạo ngữ cảnh DataFrame docker ps4 Nếu bạn muốn truy cập loại của từng tính năng, bạn có thể sử dụng printSchema() docker ps5 Ví dụ học máy với PySparkBây giờ bạn đã có một ý tưởng ngắn gọn về Spark và SQLContext, bạn đã sẵn sàng xây dựng chương trình Machine learning đầu tiên của mình Sau đây là các bước để xây dựng chương trình Machine Learning với PySpark
Trong hướng dẫn Học máy PySpark này, chúng tôi sẽ sử dụng tập dữ liệu dành cho người lớn. Mục đích của hướng dẫn này là để học cách sử dụng Pyspark. Để biết thêm thông tin về tập dữ liệu, hãy tham khảo hướng dẫn này Lưu ý rằng, tập dữ liệu không đáng kể và bạn có thể nghĩ rằng việc tính toán mất nhiều thời gian. Spark được thiết kế để xử lý một lượng dữ liệu đáng kể. Hiệu suất của Spark tăng so với các thư viện máy học khác khi bộ dữ liệu được xử lý ngày càng lớn hơn Bước 1) Thao tác cơ bản với PySparkTrước hết, bạn cần khởi tạo SQLContext chưa được khởi tạo docker ps6 sau đó, bạn có thể đọc tệp cvs bằng sqlContext. đọc. csv. Bạn sử dụng inferSchema được đặt thành True để báo cho Spark tự động đoán loại dữ liệu. Theo mặc định, nó được chuyển thành Sai docker ps7 Hãy xem kiểu dữ liệu docker ps8 Bạn có thể xem dữ liệu với show docker ps9 cd anaconda3 touch hello-spark.yml vi hello-spark.yml0 Nếu bạn không đặt inderShema thành True, đây là điều đang xảy ra với loại. Có tất cả trong chuỗi cd anaconda3 touch hello-spark.yml vi hello-spark.yml1 Để chuyển đổi biến liên tục theo đúng định dạng, bạn có thể sử dụng tính năng viết lại các cột. Bạn có thể sử dụng withColumn để cho Spark biết cột nào sẽ vận hành chuyển đổi cd anaconda3 touch hello-spark.yml vi hello-spark.yml2 Chọn cộtBạn có thể chọn và hiển thị các hàng bằng cách chọn và tên của các tính năng. Dưới đây, tuổi và fnlwgt được chọn cd anaconda3 touch hello-spark.yml vi hello-spark.yml3____34 Đếm theo nhómNếu bạn muốn đếm số lần xuất hiện theo nhóm, bạn có thể xâu chuỗi
cùng với nhau. Trong ví dụ PySpark bên dưới, bạn đếm số hàng theo trình độ học vấn cd anaconda3 touch hello-spark.yml vi hello-spark.yml5 cd anaconda3 touch hello-spark.yml vi hello-spark.yml6 Mô tả dữ liệuĐể lấy số liệu thống kê tóm tắt về dữ liệu, bạn có thể sử dụng description(). Nó sẽ tính toán
cd anaconda3 touch hello-spark.yml vi hello-spark.yml7____38 Nếu bạn muốn thống kê tóm tắt của chỉ một cột, hãy thêm tên của cột bên trong description() cd anaconda3 touch hello-spark.yml vi hello-spark.yml9 cd C:\Users\Admin\Anaconda3 echo.>hello-spark.yml notepad hello-spark.yml0 tính toán chéo bảngTrong một số trường hợp, có thể thú vị khi xem số liệu thống kê mô tả giữa hai cột theo cặp. Chẳng hạn, bạn có thể đếm số người có thu nhập dưới hoặc trên 50k theo trình độ học vấn. Hoạt động này được gọi là bảng chéo cd C:\Users\Admin\Anaconda3 echo.>hello-spark.yml notepad hello-spark.yml1 cd C:\Users\Admin\Anaconda3 echo.>hello-spark.yml notepad hello-spark.yml2 Bạn có thể thấy không ai có thu nhập trên 50k khi còn trẻ thả cộtCó hai API trực quan để thả cột
Bên dưới bạn thả cột education_num cd C:\Users\Admin\Anaconda3 echo.>hello-spark.yml notepad hello-spark.yml3 Lọc dữ liệuBạn có thể sử dụng bộ lọc () để áp dụng thống kê mô tả trong một tập hợp con dữ liệu. Chẳng hạn, bạn có thể đếm số người trên 40 tuổi cd C:\Users\Admin\Anaconda3 echo.>hello-spark.yml notepad hello-spark.yml4 13443 Thống kê mô tả theo nhómCuối cùng, bạn có thể nhóm dữ liệu theo nhóm và tính toán các hoạt động thống kê như giá trị trung bình cd C:\Users\Admin\Anaconda3 echo.>hello-spark.yml notepad hello-spark.yml5 cd C:\Users\Admin\Anaconda3 echo.>hello-spark.yml notepad hello-spark.yml6 Bước 2) Tiền xử lý dữ liệuXử lý dữ liệu là một bước quan trọng trong học máy. Sau khi xóa dữ liệu rác, bạn sẽ nhận được một số thông tin chi tiết quan trọng Chẳng hạn, bạn biết rằng tuổi không phải là một hàm tuyến tính với thu nhập. Khi mọi người còn trẻ, thu nhập của họ thường thấp hơn so với tuổi trung niên. Sau khi nghỉ hưu, một hộ gia đình sử dụng tiền tiết kiệm của họ, nghĩa là thu nhập giảm. Để chụp mẫu này, bạn có thể thêm một hình vuông vào tính năng tuổi Thêm hình vuông tuổi Để thêm một tính năng mới, bạn cần phải
cd C:\Users\Admin\Anaconda3 echo.>hello-spark.yml notepad hello-spark.yml7 Bạn có thể thấy rằng age_square đã được thêm thành công vào khung dữ liệu. Bạn có thể thay đổi thứ tự của các biến bằng select. Dưới đây, bạn mang age_square ngay sau tuổi cd C:\Users\Admin\Anaconda3 echo.>hello-spark.yml notepad hello-spark.yml8 cd C:\Users\Admin\Anaconda3 echo.>hello-spark.yml notepad hello-spark.yml9 Loại trừ Hà Lan-Hà Lan Khi một nhóm trong một tính năng chỉ có một quan sát, nó sẽ không mang lại thông tin gì cho mô hình. Ngược lại, nó có thể dẫn đến lỗi trong quá trình xác thực chéo Cùng check nguồn gốc hộ nhé name: hello-spark dependencies: - python=3.6 - jupyter - ipython - numpy - numpy-base - pandas - py4j - pyspark - pytz0 name: hello-spark dependencies: - python=3.6 - jupyter - ipython - numpy - numpy-base - pandas - py4j - pyspark - pytz1 Tính năng native_country chỉ có một hộ gia đình đến từ Hà Lan. Bạn loại trừ nó name: hello-spark dependencies: - python=3.6 - jupyter - ipython - numpy - numpy-base - pandas - py4j - pyspark - pytz2 Bước 3) Xây dựng quy trình xử lý dữ liệuTương tự như scikit-learning, Pyspark có API đường dẫn Một đường ống rất thuận tiện để duy trì cấu trúc của dữ liệu. Bạn đẩy dữ liệu vào đường ống. Bên trong đường ống, các hoạt động khác nhau được thực hiện, đầu ra được sử dụng để cung cấp thuật toán Chẳng hạn, một chuyển đổi phổ biến trong học máy bao gồm chuyển đổi một chuỗi thành một bộ mã hóa nóng, i. e. , một cột của một nhóm. Một bộ mã hóa nóng thường là một ma trận chứa đầy các số 0 Các bước để chuyển đổi dữ liệu rất giống với scikit-learning. Bạn cần phải
Hai API thực hiện công việc. String Indexer, OneHotEncoder
name: hello-spark dependencies: - python=3.6 - jupyter - ipython - numpy - numpy-base - pandas - py4j - pyspark - pytz3
name: hello-spark dependencies: - python=3.6 - jupyter - ipython - numpy - numpy-base - pandas - py4j - pyspark - pytz4
name: hello-spark dependencies: - python=3.6 - jupyter - ipython - numpy - numpy-base - pandas - py4j - pyspark - pytz5 name: hello-spark dependencies: - python=3.6 - jupyter - ipython - numpy - numpy-base - pandas - py4j - pyspark - pytz6 name: hello-spark dependencies: - python=3.6 - jupyter - ipython - numpy - numpy-base - pandas - py4j - pyspark - pytz7 Xây dựng đường ốngBạn sẽ xây dựng một quy trình để chuyển đổi tất cả các tính năng chính xác và thêm chúng vào tập dữ liệu cuối cùng. Quy trình sẽ có bốn thao tác, nhưng bạn có thể thêm bao nhiêu thao tác tùy thích
Mỗi bước được lưu trữ trong một danh sách có tên là các giai đoạn. Danh sách này sẽ cho VectorAssembler biết thao tác nào cần thực hiện bên trong đường ống 1. Mã hóa dữ liệu phân loại Bước này hoàn toàn giống với ví dụ trên, ngoại trừ việc bạn lặp lại tất cả các tính năng phân loại name: hello-spark dependencies: - python=3.6 - jupyter - ipython - numpy - numpy-base - pandas - py4j - pyspark - pytz8 2. Lập chỉ mục tính năng nhãn Spark, giống như nhiều thư viện khác, không chấp nhận giá trị chuỗi cho nhãn. Bạn chuyển đổi tính năng nhãn bằng StringIndexer và thêm nó vào giai đoạn danh sách name: hello-spark dependencies: - python=3.6 - jupyter - ipython - numpy - numpy-base - pandas - py4j - pyspark - pytz9 3. Thêm biến liên tục InputCols của VectorAssembler là một danh sách các cột. Bạn có thể tạo một danh sách mới chứa tất cả các cột mới. Mã bên dưới điền vào danh sách các tính năng phân loại được mã hóa và các tính năng liên tục conda env create -f hello-spark.yml0 4. Lắp ráp các bước Cuối cùng, bạn vượt qua tất cả các bước trong VectorAssembler conda env create -f hello-spark.yml1 Bây giờ tất cả các bước đã sẵn sàng, bạn đẩy dữ liệu vào đường ống dẫn conda env create -f hello-spark.yml2 Nếu bạn kiểm tra tập dữ liệu mới, bạn có thể thấy rằng nó chứa tất cả các tính năng, được chuyển đổi và không được chuyển đổi. Bạn chỉ quan tâm đến nhãn và các tính năng mới. Các tính năng bao gồm tất cả các tính năng được chuyển đổi và các biến liên tục conda env create -f hello-spark.yml3 Bước 4) Xây dựng bộ phân loại. hậu cầnĐể tính toán nhanh hơn, bạn chuyển đổi mô hình thành DataFrame Bạn cần chọn nhãn mới và các tính năng từ mô hình bằng bản đồ conda env create -f hello-spark.yml4 Bạn đã sẵn sàng tạo dữ liệu tàu dưới dạng DataFrame. Bạn sử dụng sqlContext conda env create -f hello-spark.yml5 Kiểm tra hàng thứ hai conda env create -f hello-spark.yml6 conda env create -f hello-spark.yml7 Tạo một tập huấn luyện/kiểm tra Bạn chia tập dữ liệu 80/20 bằng RandomSplit conda env create -f hello-spark.yml8 Hãy đếm xem có bao nhiêu người có thu nhập dưới/trên 50k trong cả tập huấn luyện và tập kiểm tra conda env create -f hello-spark.yml9 conda env list0 conda env list1 conda env list2 Xây dựng hồi quy logisticCuối cùng nhưng không kém phần quan trọng, bạn có thể xây dựng bộ phân loại. Pyspark có một API gọi là LogisticRegression để thực hiện hồi quy logistic Bạn khởi tạo lr bằng cách chỉ ra cột nhãn và cột tính năng. Bạn đặt tối đa 10 lần lặp và thêm tham số chuẩn hóa có giá trị bằng 0. 3. Lưu ý rằng trong phần tiếp theo, bạn sẽ sử dụng xác thực chéo với lưới tham số để điều chỉnh mô hình conda env list3 #Bạn có thể thấy các hệ số từ hồi quy conda env list4 conda env list5 Bước 5) Huấn luyện và đánh giá mô hìnhĐể tạo dự đoán cho bộ thử nghiệm của bạn, Bạn có thể sử dụng linearModel với biến đổi () trên test_data conda env list6 Bạn có thể in các phần tử trong dự đoán conda env list7 Bạn quan tâm đến nhãn, dự đoán và xác suất conda env list8 conda env list9 Đánh giá mô hìnhBạn cần xem chỉ số chính xác để xem mô hình hoạt động tốt (hoặc kém) như thế nào. Hiện tại, không có API để tính toán độ chính xác trong Spark. Giá trị mặc định là ROC, đường cong đặc tính hoạt động của máy thu. Đó là một số liệu khác có tính đến tỷ lệ dương tính giả Trước khi bạn xem ROC, hãy xây dựng thước đo độ chính xác. Bạn đã quen thuộc hơn với chỉ số này. Thước đo độ chính xác là tổng của dự đoán đúng trên tổng số quan sát Bạn tạo một DataFrame có nhãn và `prediction Activate hello-spark0 Bạn có thể kiểm tra số lớp trong nhãn và dự đoán Activate hello-spark1 conda env list2 Activate hello-spark3 Activate hello-spark4 Chẳng hạn, trong bộ thử nghiệm, có 1578 hộ gia đình có thu nhập trên 50k và 5021 hộ gia đình dưới đây. Tuy nhiên, bộ phân loại đã dự đoán 617 hộ gia đình có thu nhập trên 50 nghìn Bạn có thể tính toán độ chính xác bằng cách tính số lượng khi nhãn được phân loại chính xác trên tổng số hàng Activate hello-spark5 0. 8237611759357478 Bạn có thể bọc mọi thứ lại với nhau và viết một hàm để tính toán độ chính xác Activate hello-spark6 chỉ số ROCMô-đun BinaryClassificationEvaluator bao gồm các biện pháp ROC. Đường cong Đặc tính hoạt động của máy thu là một công cụ phổ biến khác được sử dụng với phân loại nhị phân. Nó rất giống với đường cong độ chính xác/thu hồi, nhưng thay vì vẽ biểu đồ độ chính xác so với thu hồi, đường cong ROC hiển thị tỷ lệ dương thực (tính bằng. e. thu hồi) so với tỷ lệ dương tính giả. Tỷ lệ dương tính giả là tỷ lệ các trường hợp âm tính được phân loại không chính xác là dương tính. Nó bằng một trừ đi tỷ lệ âm thực sự. Tỷ lệ âm tính thực sự còn được gọi là độ đặc hiệu. Do đó, đồ thị đường cong ROC có độ nhạy (thu hồi) so với 1 – độ đặc hiệu Activate hello-spark7 0. 8940481662695192 khu vực Dưới ROC Activate hello-spark8 0. 8940481662695192 Bước 6) Điều chỉnh siêu tham sốCuối cùng nhưng không kém phần quan trọng, bạn có thể điều chỉnh siêu tham số. Tương tự như scikit learn bạn tạo lưới thông số, và bạn thêm thông số muốn chỉnh Để giảm thời gian tính toán, bạn chỉ điều chỉnh tham số chuẩn hóa chỉ với hai giá trị Activate hello-spark9 Cuối cùng, bạn đánh giá mô hình bằng phương pháp xác thực chéo với 5 lần. Mất khoảng 16 phút để đào tạo source activate hello-spark0 Thời gian đào tạo người mẫu. 978. 807 giây Siêu tham số chuẩn hóa tốt nhất là 0. 01, với độ chính xác 85. 316 phần trăm source activate hello-spark1 Bạn có thể trích xuất tham số được đề xuất bằng cách xâu chuỗi cvModel. bestModel với extractParamMap() source activate hello-spark2 source activate hello-spark3 Tóm lượcSpark là một công cụ cơ bản cho một nhà khoa học dữ liệu. Nó cho phép người thực hành kết nối một ứng dụng với các nguồn dữ liệu khác nhau, thực hiện phân tích dữ liệu một cách liền mạch hoặc thêm một mô hình dự đoán Để bắt đầu với Spark, bạn cần khởi tạo Bối cảnh Spark với `SparkContext()“ và ngữ cảnh SQL để kết nối với nguồn dữ liệu `SQLContext()“ Trong hướng dẫn này, bạn học cách huấn luyện hồi quy logistic
source activate hello-spark4 Lưu ý rằng tên cột của nhãn là nhãn mới và tất cả các tính năng được tập hợp trong các tính năng. Thay đổi các giá trị này nếu khác trong tập dữ liệu của bạn PySpark trong Python là gì?PySpark là API Python dành cho Apache Spark, một khung điện toán phân tán, mã nguồn mở và bộ thư viện để xử lý dữ liệu quy mô lớn, thời gian thực . Nếu bạn đã quen thuộc với Python và các thư viện như Pandas, thì PySpark là một ngôn ngữ tốt để học để tạo ra các phân tích và quy trình có thể mở rộng hơn.
PySpark có giống với Python không?PySpark là API dựa trên Python sử dụng khung Spark kết hợp với Python . Nhưng, tất cả chúng ta đều biết rằng Spark là công cụ dữ liệu lớn trong khi Python là ngôn ngữ lập trình.
PySpark hay Python cái nào tốt hơn?PySpark cung cấp thuật toán đã được triển khai để chúng tôi có thể dễ dàng tích hợp nó. Python rất linh hoạt và chúng ta có thể dễ dàng thực hiện phân tích dữ liệu vì nó dễ học và dễ triển khai . Nó cung cấp các thư viện liên quan đến R và khoa học dữ liệu. Nó cũng hỗ trợ lập trình R và học máy khoa học dữ liệu, v.v.
Bạn có thể sử dụng PySpark bằng Python không?Bạn cũng có thể sử dụng trình bao Python tiêu chuẩn để thực thi các chương trình của mình miễn là PySpark được cài đặt vào môi trường Python đó . |