Aracılığıyla paylaş


Eski görselleştirmeler

Bu makalede eski Azure Databricks görselleştirmeleri açıklanmaktadır. Geçerli görselleştirme desteği için bkz . Databricks not defterlerindeki görselleştirmeler .

Azure Databricks ayrıca Python ve R'deki görselleştirme kitaplıklarını yerel olarak destekler ve üçüncü taraf kitaplıklarını yükleyip kullanmanıza olanak tanır.

Eski görselleştirme oluşturma

Sonuç hücresinden eski görselleştirme oluşturmak için, Eski Görselleştirme'ye tıklayıp + seçin.

Eski görselleştirmeler zengin çizim türleri kümesini destekler:

Grafik türleri

Eski grafik türünü seçme ve yapılandırma

Çubuk grafik seçmek için çubuk grafik simgesine Grafik Düğmesitıklayın:

Çubuk grafik simgesi

Başka bir çizim türü seçmek için çubuk grafiğin Grafik Düğmesi sağındaki öğesine tıklayın Aşağı Düğmesi ve çizim türünü seçin.

Eski grafik araç çubuğu

Hem çizgi hem de çubuk grafiklerde, zengin bir istemci tarafı etkileşim kümesini destekleyen yerleşik bir araç çubuğu vardır.

Grafik araç çubuğu

Bir grafiği yapılandırmak için Çizim Seçenekleri...'ne tıklayın.

Çizim seçenekleri

Çizgi grafiğin birkaç özel grafik seçeneği vardır: Y ekseni aralığını ayarlama, noktaları gösterme ve gizleme, Y eksenini logaritmik bir ölçekle görüntüleme.

Eski grafik türleri hakkında bilgi için bkz.

Grafikler arasında renk tutarlılığı

Azure Databricks, eski grafikler arasında iki tür renk tutarlılığını destekler: seri kümesi ve genel.

Seri kümesi renk tutarlılığı, farklı satırlarda aynı değerlere sahip olan bir seriniz varsa aynı değere aynı rengi atar (Örneğin A = ["Apple", "Orange", "Banana"] ve B = ["Orange", "Banana", "Apple"]). Değerler çizim öncesinde sıralandığından her iki gösterge de aynı şekilde sıralanır (["Apple", "Banana", "Orange"]) ve aynı renklere aynı değerler verilir. Ancak, C = ["Orange", "Banana"] olan bir seriniz varsa küme aynı olmadığından A kümesi ile rengi tutarlı olmayacaktır. Sıralama algoritması, C kümesindeki "Banana" öğesine ilk rengi, ancak A kümesindeki "Banana" öğesine ikinci rengi atar. Bu serideki renklerin tutarlı olmasını istiyorsanız grafiklerin genel renk tutarlılığına sahip olması gerektiğini belirtebilirsiniz.

Genel renk tutarlılığında, seride hangi değerler olursa olsun, her değer her zaman aynı renge eşlenir. Bunu her grafikte etkinleştirmek için Genel renk tutarlılığı onay kutusunu işaretleyin.

Genel renk tutarlılığı

Not

Bu tutarlılığı elde etmek için Azure Databricks doğrudan değerlerden renklere karma oluşturur. Çakışmalardan (iki değerin tam olarak aynı renge karşılık gelmesi) kaçınmak için, karma büyük bir renk kümesinden oluşturulur; bunun yan etkilerinden biri hoş duran veya kolayca ayırt edilebilen renklerin garanti edilememesidir. Çok sayıda renk olduğundan bazılarının birbirlerine çok benzemesi kaçınılmazdır.

Makine öğrenmesi görselleştirmeleri

Eski görselleştirmeler, standart grafik türlerine ek olarak aşağıdaki makine öğrenmesi eğitim parametrelerini ve sonuçlarını destekler:

Fazlalıklar

Doğrusal ve lojistik regresyonlar için uydurülen ve artıklara göre bir çizim oluşturabilirsiniz. Bu çizimi elde etmek için modeli ve DataFrame'i sağlayın.

Aşağıdaki örnek, şehir nüfusundan ev satış fiyatı verilerine doğrusal bir regresyon oluşturur ve sonra fazlalıklara karşılık uydurulan verileri görüntüler.

# Load data
pop_df = spark.read.csv("/databricks-datasets/samples/population-vs-price/data_geo.csv", header="true", inferSchema="true")

# Drop rows with missing values and rename the feature and label columns, replacing spaces with _
from pyspark.sql.functions import col
pop_df = pop_df.dropna() # drop rows with missing values
exprs = [col(column).alias(column.replace(' ', '_')) for column in pop_df.columns]

# Register a UDF to convert the feature (2014_Population_estimate) column vector to a VectorUDT type and apply it to the column.
from pyspark.ml.linalg import Vectors, VectorUDT

spark.udf.register("oneElementVec", lambda d: Vectors.dense([d]), returnType=VectorUDT())
tdata = pop_df.select(*exprs).selectExpr("oneElementVec(2014_Population_estimate) as features", "2015_median_sales_price as label")

# Run a linear regression
from pyspark.ml.regression import LinearRegression

lr = LinearRegression()
modelA = lr.fit(tdata, {lr.regParam:0.0})

# Plot residuals versus fitted data
display(modelA, tdata)

Fazlalıkları görüntüleme

ROC eğrileri

Lojistik regresyonlar için bir ROC eğrisi işleyebilirsiniz. Bu çizimi elde etmek için modeli, yöntemine fit giriş olan önceden oluşturulmuş verileri ve parametresini "ROC"sağlayın.

Aşağıdaki örnek, bir bireyin çeşitli özniteliklerinden yılda =50K veya >50 bin kazanıp kazanmadığını <tahmin eden bir sınıflandırıcı geliştirir. Yetişkin veri kümesi nüfus sayım verilerinden alınır ve 48.842 birey ile yıllık gelirleri hakkında bilgi içerir.

Bu bölümdeki örnek kodda one-hot kodlama kullanılır.


# This code uses one-hot encoding to convert all categorical variables into binary vectors.

schema = """`age` DOUBLE,
`workclass` STRING,
`fnlwgt` DOUBLE,
`education` STRING,
`education_num` DOUBLE,
`marital_status` STRING,
`occupation` STRING,
`relationship` STRING,
`race` STRING,
`sex` STRING,
`capital_gain` DOUBLE,
`capital_loss` DOUBLE,
`hours_per_week` DOUBLE,
`native_country` STRING,
`income` STRING"""

dataset = spark.read.csv("/databricks-datasets/adult/adult.data", schema=schema)

from pyspark.ml import Pipeline
from pyspark.ml.feature import OneHotEncoder, StringIndexer, VectorAssembler

categoricalColumns = ["workclass", "education", "marital_status", "occupation", "relationship", "race", "sex", "native_country"]

stages = [] # stages in the Pipeline
for categoricalCol in categoricalColumns:
    # Category indexing with StringIndexer
    stringIndexer = StringIndexer(inputCol=categoricalCol, outputCol=categoricalCol + "Index")
    # Use OneHotEncoder to convert categorical variables into binary SparseVectors
    encoder = OneHotEncoder(inputCols=[stringIndexer.getOutputCol()], outputCols=[categoricalCol + "classVec"])
    # Add stages.  These are not run here, but will run all at once later on.
    stages += [stringIndexer, encoder]

# Convert label into label indices using the StringIndexer
label_stringIdx = StringIndexer(inputCol="income", outputCol="label")
stages += [label_stringIdx]

# Transform all features into a vector using VectorAssembler
numericCols = ["age", "fnlwgt", "education_num", "capital_gain", "capital_loss", "hours_per_week"]
assemblerInputs = [c + "classVec" for c in categoricalColumns] + numericCols
assembler = VectorAssembler(inputCols=assemblerInputs, outputCol="features")
stages += [assembler]

# Run the stages as a Pipeline. This puts the data through all of the feature transformations in a single call.

partialPipeline = Pipeline().setStages(stages)
pipelineModel = partialPipeline.fit(dataset)
preppedDataDF = pipelineModel.transform(dataset)

# Fit logistic regression model

from pyspark.ml.classification import LogisticRegression
lrModel = LogisticRegression().fit(preppedDataDF)

# ROC for data
display(lrModel, preppedDataDF, "ROC")

ROC'yi görüntüleme

Fazlalıkları görüntülemek için "ROC" parametresini çıkarın:

display(lrModel, preppedDataDF)

Lojistik regresyon fazlalıklarını görüntüleme

Karar ağaçları

Eski görselleştirmeler karar ağacının işlenmesini destekler.

Bu görselleştirmeyi edinmek için karar ağacı modelini sağlayın.

Aşağıdaki örnekler, el ile yazılan rakamların görüntülerinden oluşan MNIST veri kümesinden rakamları (0 - 9) tanıyan bir ağacı eğitir ve sonra ağacı görüntüler.

Python

trainingDF = spark.read.format("libsvm").load("/databricks-datasets/mnist-digits/data-001/mnist-digits-train.txt").cache()
testDF = spark.read.format("libsvm").load("/databricks-datasets/mnist-digits/data-001/mnist-digits-test.txt").cache()

from pyspark.ml.classification import DecisionTreeClassifier
from pyspark.ml.feature import StringIndexer
from pyspark.ml import Pipeline

indexer = StringIndexer().setInputCol("label").setOutputCol("indexedLabel")

dtc = DecisionTreeClassifier().setLabelCol("indexedLabel")

# Chain indexer + dtc together into a single ML Pipeline.
pipeline = Pipeline().setStages([indexer, dtc])

model = pipeline.fit(trainingDF)
display(model.stages[-1])

Scala

val trainingDF = spark.read.format("libsvm").load("/databricks-datasets/mnist-digits/data-001/mnist-digits-train.txt").cache
val testDF = spark.read.format("libsvm").load("/databricks-datasets/mnist-digits/data-001/mnist-digits-test.txt").cache

import org.apache.spark.ml.classification.{DecisionTreeClassifier, DecisionTreeClassificationModel}
import org.apache.spark.ml.feature.StringIndexer
import org.apache.spark.ml.Pipeline

val indexer = new StringIndexer().setInputCol("label").setOutputCol("indexedLabel")
val dtc = new DecisionTreeClassifier().setLabelCol("indexedLabel")
val pipeline = new Pipeline().setStages(Array(indexer, dtc))

val model = pipeline.fit(trainingDF)
val tree = model.stages.last.asInstanceOf[DecisionTreeClassificationModel]

display(tree)

Karar ağacını görüntüleme

Yapılandırılmış Akış Veri Çerçeveleri

Bir akış sorgusunun sonucunu gerçek zamanlı olarak görselleştirmek için, Scala ve Python'da bir Yapılandırılmış Akış Veri Çerçevesini display ile görüntüleyebilirsiniz.

Python

streaming_df = spark.readStream.format("rate").load()
display(streaming_df.groupBy().count())

Scala

val streaming_df = spark.readStream.format("rate").load()
display(streaming_df.groupBy().count())

display aşağıdaki isteğe bağlı parametreleri destekler:

  • streamName: akış sorgusu adı.
  • trigger (Scala) ve processingTime (Python): Akış sorgusunun ne sıklıkla çalıştırılacağını tanımlar. Belirtilmezse, sistem önceki işlem tamamlandıktan hemen sonra yeni verilerin kullanılabilirliğini denetler. Üretim maliyetini düşürmek için Databricks her zaman bir tetikleyici aralığı tanımlamanızı önerir. Varsayılan tetikleyici aralığı 500 ms'dir.
  • checkpointLocation: sistemin tüm denetim noktası bilgilerini yazdığı konum. Belirtilmezse, sistem otomatik olarak DBFS üzerinde geçici bir denetim noktası konumu oluşturur. Akışınızın bırakılan yerden veri işlemeye devam etmesi için bir denetim noktası konumu sağlamalısınız. Databricks üretim ortamında her zamancheckpointLocation seçeneğini belirtmenizi önerir.

Python

streaming_df = spark.readStream.format("rate").load()
display(streaming_df.groupBy().count(), processingTime = "5 seconds", checkpointLocation = "dbfs:/<checkpoint-path>")

Scala

import org.apache.spark.sql.streaming.Trigger

val streaming_df = spark.readStream.format("rate").load()
display(streaming_df.groupBy().count(), trigger = Trigger.ProcessingTime("5 seconds"), checkpointLocation = "dbfs:/<checkpoint-path>")

Bu parametreler hakkında daha fazla bilgi için bkz. Akış Sorguları Başlatma.

displayHTML işlevi

Azure Databricks programlama dili not defterleri (Python, R ve Scala), displayHTML işlevini kullanan HTML grafiklerini destekler; işleve herhangi bir HTML, CSS veya JavaScript kodunu geçirebilirsiniz. Bu işlev, D3 gibi JavaScript kitaplıklarını kullanan etkileşimli grafikleri destekler.

displayHTML kullanımına örnekler için bkz.

Not

displayHTML iframe’i databricksusercontent.com etki alanından sunulur ve iframe korumalı alanı allow-same-origin özniteliğini içerir. databricksusercontent.com tarayıcınızdan erişilebilir olmalıdır. Şu anda kurumsal ağınız tarafından engelleniyorsa, izin verilenler listesine eklenmesi gerekir.

Görüntü

Görüntü veri türlerini içeren sütunlar zengin HTML olarak işlenir. Azure Databricks, Spark ImageSchema ile eşleşen sütunlar için DataFrame görüntü küçük resimlerini işlemeye çalışır. Küçük resim işleme işlevi aracılığıyla spark.read.format('image') başarıyla okunan tüm görüntüler için çalışır. Azure Databricks, diğer yollarla oluşturulan görüntü değerleri için aşağıdaki kısıtlamalarla (her biri tek bir bayttan oluşan) 1, 3 veya 4 kanallı görüntülerin işlenmesini destekler:

  • Tek kanallı görüntüler: mode alanı 0'a eşit olmalıdır. height, width ve nChannels alanları data alanındaki ikili görüntü verilerini doğru olarak betimlemelidir.
  • Üç kanallı görüntüler: mode alanı 16'ya eşit olmalıdır. height, width ve nChannels alanları data alanındaki ikili görüntü verilerini doğru olarak betimlemelidir. data alanı, kanal sıralaması her piksel için (blue, green, red) olacak şekilde üç baytlık öbekler halinde piksel verileri içermelidir.
  • Dört kanallı görüntüler: mode alanı 24'e eşit olmalıdır. height, width ve nChannels alanları data alanındaki ikili görüntü verilerini doğru olarak betimlemelidir. data alanı, kanal sıralaması her piksel için (blue, green, red, alpha) olacak şekilde dört baytlık öbekler halinde piksel verileri içermelidir.

Örnek

Bazı görüntüler içeren bir klasörünüz olduğunu varsayalım:

Görüntü verileri klasörü

Görüntüleri bir DataFrame'de okur ve ardından DataFrame'i görüntülerseniz Azure Databricks görüntülerin küçük resimlerini işler:

image_df = spark.read.format("image").load(sample_img_dir)
display(image_df)

Görüntü Veri Çerçevesini görüntüleme

Python'da görselleştirmeler

Bu bölümde:

Seaborn

Grafik çizimler oluşturmak için diğer Python kitaplıklarını da kullanabilirsiniz. Databricks Runtime, seaborn görselleştirme kitaplığını içerir. Bir seaborn grafik çizimi oluşturmak için kitaplığı içeri aktarın, çizim oluşturun ve çizimi display işlevine geçirin.

import seaborn as sns
sns.set(style="white")

df = sns.load_dataset("iris")
g = sns.PairGrid(df, diag_sharey=False)
g.map_lower(sns.kdeplot)
g.map_diag(sns.kdeplot, lw=3)

g.map_upper(sns.regplot)

display(g.fig)

Seaborn grafiği

Diğer Python kitaplıkları

R'de görselleştirmeler

R'de veri grafiği çizmek için display işlevini aşağıdaki gibi kullanın:

library(SparkR)
diamonds_df <- read.df("/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv", source = "csv", header="true", inferSchema = "true")

display(arrange(agg(groupBy(diamonds_df, "color"), "price" = "avg"), "color"))

Varsayılan R plot işlevini kullanabilirsiniz.

fit <- lm(Petal.Length ~., data = iris)
layout(matrix(c(1,2,3,4),2,2)) # optional 4 graphs/page
plot(fit)

R varsayılan grafik çizimi

Herhangi bir R görselleştirme paketini de kullanabilirsiniz. R not defteri, ortaya çıkan çizimi bir .png olarak yakalar ve satır içi görüntüler.

Bu bölümde:

Lattice

Lattice paketi bir veya daha fazla değişken koşullu bir değikeni veya değişkenler arasındaki ilişkiyi görüntüleyen trellis grafiklerini destekler.

library(lattice)
xyplot(price ~ carat | cut, diamonds, scales = list(log = TRUE), type = c("p", "g", "smooth"), ylab = "Log price")

R Lattice grafiği

DandEFA

DandEFA paketi dandelion çizimlerini destekler.

install.packages("DandEFA", repos = "https://cran.us.r-project.org")
library(DandEFA)
data(timss2011)
timss2011 <- na.omit(timss2011)
dandpal <- rev(rainbow(100, start = 0, end = 0.2))
facl <- factload(timss2011,nfac=5,method="prax",cormeth="spearman")
dandelion(facl,bound=0,mcex=c(1,1.2),palet=dandpal)
facl <- factload(timss2011,nfac=8,method="mle",cormeth="pearson")
dandelion(facl,bound=0,mcex=c(1,1.2),palet=dandpal)

R DandEFA grafiği

Plotly

Plotly R paketi, R için htmlwidgets'e dayanır. Yükleme yönergeleri ve not defteri için bkz. htmlwidgets.

Diğer R kitaplıkları

Scala'da görselleştirmeler

Scala'da veri grafiği çizmek için display işlevini aşağıdaki gibi kullanın:

val diamonds_df = spark.read.format("csv").option("header","true").option("inferSchema","true").load("/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv")

display(diamonds_df.groupBy("color").avg("price").orderBy("color"))

Python ve Scala için ayrıntılı not defterleri

Python görselleştirmelerine ayrıntılı bir bakış için not defterine bakın:

Scala görselleştirmelerine ayrıntılı bir bakış için not defterine bakın: