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 bir görselleştirme oluşturmak için +'a tıklayın ve Legacy Visualizationseç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 grafikler, zengin bir istemci tarafı etkileşim kümesini destekleyen yerleşik bir araç çubuğuna sahiptir.

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.

Serisi kümesi renk tutarlılığı, aynı değerlere sahip ancak farklı sıralamalarda olan serileriniz varsa, aynı değere aynı rengi atar (örneğin, A = ["Apple", "Orange", "Banana"] ve B = ["Orange", "Banana", "Apple"]). Değerler çizimden önce sıralandığından, her iki gösterge de aynı şekilde (["Apple", "Banana", "Orange"]) sıralanır ve aynı değerlere aynı renkler verilir. Ancak, C = ["Orange", "Banana"]bir seriniz varsa, küme aynı olmadığından A kümesiyle renk tutarlılığı olmaz. Sıralama algoritması C kümesindeki ilk rengi "Muz" olarak, ikinci rengi ise A kümesindeki "Muz" olarak atar. Bu serilerin renk tutarlılığı olmasını istiyorsanız grafiklerin genel renk tutarlılığı olması gerektiğini belirtebilirsiniz.

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

Genel renk tutarlılığı

Not

Bu tutarlılığı elde etmek için Azure Databricks, değerlerden renklere doğrudan hash oluşturur. Çakışmaları önlemek için (iki değerin aynı renge denk geldiği durumlarda) karma, çok fazla renkten oluşan büyük bir kümeye yapılır, bu da güzel görünen veya kolayca ayırt edilebilen renklerin garanti edilememesi gibi bir yan etkiye sahiptir; birçok renk arasında çok benzer görünen bazı renklerin olması 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. Databricks, üretim maliyetini azaltmak için her zaman bir tetikleyici aralığı ayarlamanız gerektiğini ö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 verileri kaldığınız yerden işlemeye devam edebilmesi için bir denetim noktası konumu sağlamanız gerekir. 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ını 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 şirket ağınız tarafından engelleniyorsa, izin verme listesine eklenmesi gerekir.

Görüntü

Görüntü veri türlerini içeren sütunlar zengin HTML olarak işlenir. Azure Databricks, Spark DataFrameile eşleşen sütunlar için küçük görüntüleri oluşturmaya ç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 1, 3 veya 4 kanal görüntüsünün işlenmesini (her kanalın tek bir baytten oluştuğu) aşağıdaki kısıtlamalarla 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

Ç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: