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ó

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

  • con trăn
  • Java
  • Scala
  • SQL

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

  • Nạp dữ liệu vào đĩa
  • Nhập dữ liệu vào bộ nhớ của máy
  • Xử lý/phân tích dữ liệu
  • Xây dựng mô hình máy học
  • Lưu trữ dự đoán trở lại đĩa

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

  • Bộ dữ liệu có phản ánh thế giới thực không?
  • Dữ liệu có bao gồm một ví dụ cụ thể không?
  • Mô hình có phù hợp để lấy mẫu không?

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 AWS

Nhó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 Conda

Sau đâ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 tree
0

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 Ju

Mở 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 tree
1

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 tree
2

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 tree
3

bối cảnh tia lửa

SparkContext 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 tree
1

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 tree
5

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 tree
6
## 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
7

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 tree
8
## 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
9

SQLContext

Mộ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 ps
0

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 ps
1

Bước 2] Xây dựng RDD

docker ps
2

Bước 3] Chuyển đổi các bộ dữ liệu

docker ps
3

Bước 4] Tạo ngữ cảnh DataFrame

docker ps
4

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 ps
5

Ví dụ học máy với PySpark

Bâ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

  • Bước 1] Thao tác cơ bản với PySpark
  • Bước 2] Tiền xử lý dữ liệu
  • Bước 3] Xây dựng quy trình xử lý dữ liệu
  • Bước 4] Xây dựng bộ phân loại. hậu cần
  • Bước 5] Huấn luyện và đánh giá mô hình
  • Bước 6] Điều chỉnh siêu tham số

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 PySpark

Trước hết, bạn cần khởi tạo SQLContext chưa được khởi tạo

docker ps
6

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 ps
7

Hãy xem kiểu dữ liệu

docker ps
8

Bạn có thể xem dữ liệu với show

docker ps
9
cd anaconda3
touch hello-spark.yml
vi hello-spark.yml
0

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.yml
1

Để 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.yml
2

Chọn cột

Bạ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.yml
3____34

Đếm theo nhóm

Nếu bạn muốn đếm số lần xuất hiện theo nhóm, bạn có thể xâu chuỗi

  • nhómBy[]
  • đếm[]

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.yml
5
cd anaconda3
touch hello-spark.yml
vi hello-spark.yml
6

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

  • đếm
  • ý tôi là
  • độ lệch chuẩn
  • của tôi
  • tối đa
cd anaconda3
touch hello-spark.yml
vi hello-spark.yml
7____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.yml
9
cd C:\Users\Admin\Anaconda3
echo.>hello-spark.yml
notepad hello-spark.yml
0

tính toán chéo bảng

Trong 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.yml
1
cd C:\Users\Admin\Anaconda3
echo.>hello-spark.yml
notepad hello-spark.yml
2

Bạn có thể thấy không ai có thu nhập trên 50k khi còn trẻ

thả cột

Có hai API trực quan để thả cột

  • rơi vãi[]. Thả một cột
  • rơi vãi[]. Bỏ NA

Bên dưới bạn thả cột education_num

cd C:\Users\Admin\Anaconda3
echo.>hello-spark.yml
notepad hello-spark.yml
3

Lọc dữ liệu

Bạ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.yml
4

13443

Thống kê mô tả theo nhóm

Cuố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.yml
5
cd C:\Users\Admin\Anaconda3
echo.>hello-spark.yml
notepad hello-spark.yml
6

Bước 2] Tiền xử lý dữ liệu

Xử 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

  1. Chọn cột
  2. Áp dụng chuyển đổi và thêm nó vào DataFrame
cd C:\Users\Admin\Anaconda3
echo.>hello-spark.yml
notepad hello-spark.yml
7

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.yml
8
cd C:\Users\Admin\Anaconda3
echo.>hello-spark.yml
notepad hello-spark.yml
9

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
    - pytz
0
name: hello-spark 
    dependencies:
    
    - python=3.6
    - jupyter
    - ipython
    - numpy
    - numpy-base
    - pandas
    - py4j
    - pyspark
    - pytz
1

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
    - pytz
2

Bước 3] Xây dựng quy trình xử lý dữ liệu

Tươ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

  • Lập chỉ mục chuỗi thành số
  • Tạo một bộ mã hóa nóng
  • Chuyển đổi dữ liệu

Hai API thực hiện công việc. String Indexer, OneHotEncoder

  1. Trước hết, bạn chọn cột chuỗi để lập chỉ mục. inputCol là tên của cột trong tập dữ liệu. outputCol là tên mới được đặt cho cột đã chuyển đổi
name: hello-spark 
    dependencies:
    
    - python=3.6
    - jupyter
    - ipython
    - numpy
    - numpy-base
    - pandas
    - py4j
    - pyspark
    - pytz
3
  1. Phù hợp với dữ liệu và chuyển đổi nó
name: hello-spark 
    dependencies:
    
    - python=3.6
    - jupyter
    - ipython
    - numpy
    - numpy-base
    - pandas
    - py4j
    - pyspark
    - pytz
4
  1. Tạo các cột tin tức dựa trên nhóm. Chẳng hạn, nếu có 10 nhóm trong đối tượng địa lý, ma trận mới sẽ có 10 cột, mỗi cột cho một nhóm
name: hello-spark 
    dependencies:
    
    - python=3.6
    - jupyter
    - ipython
    - numpy
    - numpy-base
    - pandas
    - py4j
    - pyspark
    - pytz
5
name: hello-spark 
    dependencies:
    
    - python=3.6
    - jupyter
    - ipython
    - numpy
    - numpy-base
    - pandas
    - py4j
    - pyspark
    - pytz
6
name: hello-spark 
    dependencies:
    
    - python=3.6
    - jupyter
    - ipython
    - numpy
    - numpy-base
    - pandas
    - py4j
    - pyspark
    - pytz
7

Xây dựng đường ống

Bạ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

  1. Mã hóa dữ liệu phân loại
  2. Lập chỉ mục tính năng nhãn
  3. Thêm biến liên tục
  4. Lắp ráp các bước

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
    - pytz
8

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
    - pytz
9

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.yml
0

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.yml
1

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.yml
2

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.yml
3

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.yml
4

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.yml
5

Kiểm tra hàng thứ hai

conda env create -f hello-spark.yml
6
conda env create -f hello-spark.yml
7

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.yml
8

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.yml
9
conda env list
0
conda env list
1
conda env list
2

Xây dựng hồi quy logistic

Cuố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 list
3

#Bạn có thể thấy các hệ số từ hồi quy

conda env list
4
conda env list
5

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 list
6

Bạn có thể in các phần tử trong dự đoán

conda env list
7

Bạn quan tâm đến nhãn, dự đoán và xác suất

conda env list
8
conda env list
9

Đánh giá mô hình

Bạ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-spark
0

Bạn có thể kiểm tra số lớp trong nhãn và dự đoán

Activate hello-spark
1
conda env list
2
Activate hello-spark
3
Activate hello-spark
4

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-spark
5

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-spark
6

chỉ số ROC

Mô-đ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-spark
7

0. 8940481662695192 khu vực Dưới ROC

Activate hello-spark
8

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-spark
9

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-spark
0

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-spark
1

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-spark
2
source activate hello-spark
3

Tóm lược

Spark 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

  1. Chuyển đổi tập dữ liệu thành Dataframe với
source activate hello-spark
4

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 đó .

Chủ Đề