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:
Eski grafik türünü seçme ve yapılandırma
Çubuk grafik seçmek için çubuk grafik simgesine tıklayın:
Başka bir çizim türü seçmek için çubuk grafiğin sağındaki öğesine tıklayın 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.
Bir grafiği yapılandırmak için Çizim Seçenekleri...'ne tıklayın.
Ç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.
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)
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")
Fazlalıkları görüntülemek için "ROC"
parametresini çıkarın:
display(lrModel, preppedDataDF)
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)
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) veprocessingTime
(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
venChannels
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
venChannels
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
venChannels
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ü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)
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)
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)
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")
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)
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: